home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / inter60a / INTERRUP.D < prev    next >
Text File  |  1999-01-03  |  274KB  |  7,707 lines

  1. Interrupt List, part 4 of 18
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3. --------b-15E800-----------------------------
  4. INT 15 - Compaq Contura - GET ???
  5.     AX = E800h
  6. Return: AX = 0000h
  7.     BH = 00h
  8.     BL = ??? (read from port 0C7Ch)
  9.     CH = ???
  10.     CL = ???
  11.     DX = 0000h
  12. Note:    also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
  13. --------b-15E800-----------------------------
  14. INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
  15.     AX = E800h
  16.     BX = ??? (0000h)
  17. Return: CF clear if successful
  18.         BH = 02h
  19.         BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
  20.     CF set on error
  21.     others???
  22. Notes:    used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
  23.       the Enhanced Parallel Port expected by that driver is available
  24.     used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
  25.       volume control hardware expected by that driver is available
  26. --------b-15E800-----------------------------
  27. INT 15 - Compaq Prolinea - GET ???
  28.     AX = E800h
  29.     BX = ??? (1369h)
  30. Return: BH = 01h
  31.     BL = ???
  32.     others???
  33. Note:    used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
  34.       the fix that driver applies is required (will not install if BX on
  35.       return is other than 010Eh or 010Fh)
  36. SeeAlso: AX=E802h
  37. --------b-15E801-----------------------------
  38. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
  39.     AX = E801h
  40. Return: CF clear if successful
  41.         AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  42.         BX = extended memory above 16M, in 64K blocks
  43.         CX = configured memory 1M to 16M, in K
  44.         DX = configured memory above 16M, in 64K blocks
  45.     CF set on error
  46. Notes:    supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
  47.       as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
  48.       BIOS
  49.     supported by AMI BIOSes dated 8/23/94 or later
  50.     on some systems, the BIOS returns AX=BX=0000h; in this case, use CX
  51.       and DX instead of AX and BX
  52.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  53.       used as a fall-back by newer versions if AX=E820h is not supported
  54. SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix"
  55. --------b-15E802-----------------------------
  56. INT 15 - Compaq Contura - GET ???
  57.     AX = E802h
  58. Return: CF clear
  59.     AX = 0000h
  60.     BX = ???
  61.     CX = 0000h
  62. Note:    this function is also supported by the LTE Lite 25c, 25E, and 486; not
  63.       supported by LTE Lite 20 and 25.
  64. SeeAlso: AX=E801h"Phoenix"
  65. --------b-15E820-----------------------------
  66. INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP
  67.     AX = E820h
  68.     EAX = 0000E820h
  69.     EDX = 534D4150h ('SMAP')
  70.     EBX = continuation value or 00000000h to start at beginning of map
  71.     ECX = size of buffer for result, in bytes (should be >= 20 bytes)
  72.     ES:DI -> buffer for result (see #00581)
  73. Return: CF clear if successful
  74.         EAX = 534D4150h ('SMAP')
  75.         ES:DI buffer filled
  76.         EBX = next offset from which to copy or 00000000h if all done
  77.         ECX = actual length returned in bytes
  78.     CF set on error
  79.         AH = error code (86h) (see #00496 at INT 15/AH=80h)
  80. Notes:    originally introduced with the Phoenix BIOS v4.0, this function is
  81.       now supported by most newer BIOSes, since various versions of Windows
  82.       call it to find out about the system memory
  83.     a maximum of 20 bytes will be transferred at one time, even if ECX is
  84.       higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
  85.       value of ECX on entry, and always copy 20 bytes
  86.     some BIOSes expect the high word of EAX to be clear on entry, i.e.
  87.       EAX=0000E820h
  88.     if this function is not supported, an application should fall back
  89.       to AX=E802h, AX=E801h, and then AH=88h
  90.     the BIOS is permitted to return a nonzero continuation value in EBX
  91.       and indicate that the end of the list has already been reached by
  92.       returning with CF set on the next iteration
  93.     this function will return base memory and ISA/PCI memory contiguous
  94.       with base memory as normal memory ranges; it will indicate
  95.       chipset-defined address holes which are not in use and motherboard
  96.       memory-mapped devices, and all occurrences of the system BIOS as
  97.       reserved; standard PC address ranges will not be reported
  98. SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
  99.  
  100. Format of Phoenix BIOS system memory map address range descriptor:
  101. Offset    Size    Description    (Table 00580)
  102.  00h    QWORD    base address
  103.  08h    QWORD    length in bytes
  104.  10h    DWORD    type of address range (see #00581)
  105.  
  106. (Table 00581)
  107. Values for System Memory Map address type:
  108.  01h    memory, available to OS
  109.  02h    reserved, not available (e.g. system ROM, memory-mapped device)
  110.  03h    ACPI Reclaim Memory (usable by OS after reading ACPI tables)
  111.  04h    ACPI NVS Memory (OS is required to save this memory between NVS
  112.       sessions)
  113.  other    not defined yet -- treat as Reserved
  114. SeeAlso: #00580
  115. --------b-15E881-----------------------------
  116. INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
  117.     AX = E881h
  118. Return: CF clear if successful
  119.         EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
  120.         EBX = extended memory above 16M, in 64K blocks
  121.         ECX = configured memory 1M to 16M, in K
  122.         EDX = configured memory above 16M, in 64K blocks
  123.     CF set on error
  124. Notes:    supported by AMI BIOSes dated 8/23/94 or later
  125.     this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
  126.       used as a fall-back by newer versions if AX=E820h is not supported
  127. SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
  128. --------m-15F200CX454D-----------------------
  129. INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
  130.     AX = F200h
  131.     CX = 454Dh
  132. Return: CF clear if hardware already initialised
  133.         BX = upper RAM areas in use
  134.         bit 0: C000-C3FF
  135.         bit 1: C400-C7FF
  136.         ...
  137.         bit 11: EC00-EFFF
  138.     CF set if hardware not initialised yet
  139. --------B-1600-------------------------------
  140. INT 16 - KEYBOARD - GET KEYSTROKE
  141.     AH = 00h
  142. Return: AH = BIOS scan code
  143.     AL = ASCII character
  144. Notes:    on extended keyboards, this function discards any extended keystrokes,
  145.       returning only when a non-extended keystroke is available
  146.     the BIOS scan code is usually, but not always, the same as the hardware
  147.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  148.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  149.       differs for shifted special keys
  150.     some (older) clone BIOSes do not discard extended keystrokes and manage
  151.       function AH=00h and AH=10h the same
  152.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  153.       keystrokes (same as with functions 10h and 20h), but will always
  154.       translate prefix E0h to 00h. This allows old programs to use extended
  155.       keystrokes and should not cause compatibility problems
  156. SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
  157. SeeAlso: INT 09,INT 15/AH=4Fh
  158. --------B-1601-------------------------------
  159. INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
  160.     AH = 01h
  161. Return: ZF set if no keystroke available
  162.     ZF clear if keystroke available
  163.         AH = BIOS scan code
  164.         AL = ASCII character
  165. Note:    if a keystroke is present, it is not removed from the keyboard buffer;
  166.       however, any extended keystrokes which are not compatible with 83/84-
  167.       key keyboards are removed by IBM and most fully-compatible BIOSes in
  168.       the process of checking whether a non-extended keystroke is available
  169.     some (older) clone BIOSes do not discard extended keystrokes and manage
  170.       function AH=00h and AH=10h the same
  171.     the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
  172.       keystrokes (same as with functions 10h and 20h), but will always
  173.       translate prefix E0h to 00h. This allows old programs to use extended
  174.       keystrokes and should not cause compatibility problems
  175. SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h,INT 09,INT 15/AH=4Fh
  176. --------B-1602-------------------------------
  177. INT 16 - KEYBOARD - GET SHIFT FLAGS
  178.     AH = 02h
  179. Return: AL = shift flags (see #00582)
  180.     AH destroyed by many BIOSes
  181. SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h,MEM 0040h:0017h
  182.  
  183. Bitfields for keyboard shift flags:
  184. Bit(s)    Description    (Table 00582)
  185.  7    Insert active
  186.  6    CapsLock active
  187.  5    NumLock active
  188.  4    ScrollLock active
  189.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  190.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  191.  1    left shift key pressed
  192.  0    right shift key pressed
  193. SeeAlso: #00587,#03743,MEM 0040h:0017h,#M0010
  194. --------B-1603-------------------------------
  195. INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
  196.     AH = 03h
  197.     AL = subfunction
  198.         00h set default delay and rate (PCjr and some PS/2)
  199.         01h increase delay before repeat (PCjr)
  200.         02h decrease repeat rate by factor of 2 (PCjr)
  201.         03h increase delay and decrease repeat rate (PCjr)
  202.         04h turn off typematic repeat (PCjr and some PS/2)
  203.         05h set repeat rate and delay (AT,PS)
  204.         BH = delay value (00h = 250ms to 03h = 1000ms)
  205.         BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
  206.         06h get current typematic rate and delay (newer PS/2s)
  207.         Return: BL = repeat rate (above)
  208.             BH = delay (above)
  209. Return: AH destroyed by many BIOSes
  210. Note:    use INT 16/AH=09h to determine whether some of the subfunctions are
  211.       supported
  212. SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
  213. --------B-1604-------------------------------
  214. INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
  215.     AH = 04h
  216.     AL = keyclick state
  217.         00h off
  218.         01h on
  219. Return: AH destroyed by many BIOSes
  220. SeeAlso: AH=03h,AH=04h"K3PLUS"
  221. --------b-1604-------------------------------
  222. INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
  223.     AH = 04h
  224. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  225. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
  226. SeeAlso: INT 51"Tandy 2000"
  227. --------K-1604-------------------------------
  228. INT 16 - K3PLUS v6.22+ - SET KEYCLICK
  229.     AH = 04h
  230.     AL = keyclick state
  231.         00h keyclick off, leave loudness setting unchanged
  232.         01h keyclick on, leave loudness setting unchanged
  233.         else
  234.            bit 0: keyclick enabled if set
  235.            bits 7-1: new keyclick loudness (non-zero)
  236. Return: AH destroyed by many BIOSes
  237. Note:    Applications which try to set a new loudness, but are unsure of the
  238.       results of other INT 16/AH=04h implementations, should set the new
  239.       loudness first, and then call this function again with AL=01h or
  240.       AL=00h
  241. SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
  242. --------B-1605-------------------------------
  243. INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
  244.     AH = 05h
  245.     CH = BIOS scan code
  246.     CL = ASCII character
  247. Return: AL = status
  248.         00h if successful
  249.         01h if keyboard buffer full
  250.     AH destroyed by many BIOSes
  251. Notes:    under DESQview, a number of "keystrokes" invoke specific
  252.       DESQview-related actions when they are read from the keyboard
  253.       buffer (see #00583)
  254.     similarly, some "keystrokes" invoke special functions on the HP 100LX
  255.       and HP 200LX (see #00584)
  256. SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
  257. SeeAlso: MEM 0040h:001Eh
  258.  
  259. (Table 00583)
  260. Values for pseudo-keystrokes for DESQview:
  261.  38FBh or FB00h    switch to next window (only if main menu already popped up)
  262.  38FCh or FC00h    pop up DESQview main menu
  263.  38FEh or FE00h    close the current window
  264.  38FFh or FF00h    pop up DESQview learn menu
  265.  
  266. (Table 00584)
  267. Values for pseudo-keystrokes for HP 100LX/200LX:
  268.  EE00h    pop up topcard display and set other system manager applications
  269.       into sleep mode
  270. --------B-1605-------------------------------
  271. INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
  272.     AH = 05h
  273.     AL = function
  274.         01h set keyboard layout to French
  275.         02h set keyboard layout to German
  276.         03h set keyboard layout to Italian
  277.         04h set keyboard layout to Spanish
  278.         05h set keyboard layout to UK
  279.         80h check if function supported
  280.         Return: AL <> 80h if supported
  281. Return: ???
  282.     AH destroyed by many BIOSes
  283. Note:    this function is called by the DOS 3.2 KEYBxx.COM
  284. SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
  285. --------b-1605-------------------------------
  286. INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
  287.     AH = 05h
  288. Desc:    reset the keyboard and flush the keyboard buffer
  289. Note:    this interrupt is identical to INT 51 on the Tandy 2000
  290. SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
  291. ----------160600-----------------------------
  292. INT 16 - AAKEYS - GET NEXT KEYBOARD EVENT
  293.     AX = 0600h
  294. Return:    CF clear if successful
  295.         AL = next keyboard event in event buffer, FFh if buffer overflowed
  296.     CF set on error
  297.         AL = 00h buffer empty
  298.     BX destroyed
  299. Program: AAKEYS is a TSR by Anthony Appleyard which records keyboard scan
  300.       codes in a 256-byte buffer in addition to any normal processing which
  301.       takes place
  302. Note:    the installation check consists of calling INT 16/AX=06xxh (where 'xx'
  303.       is any subfunction other than those listed here) and testing whether
  304.       AX=BEEFh on return
  305. SeeAlso: AX=0601h,AX=0602h,AX=0603h,AX=0604h
  306. ----------160601-----------------------------
  307. INT 16 - AAKEYS - EMPTY KEY-EVENT BUFFER
  308.     AX = 0601h
  309. Return:    nothing
  310. SeeAlso: AX=0600h,AX=0602h,AX=0603h,AX=0604h
  311. ----------160602-----------------------------
  312. INT 16 - AAKEYS - DISABLE AAKEYS
  313.     AX = 0602h
  314. Return:    AX,DX destroyed
  315. Desc:    restores INT 09 and INT 16 and clears the TSRs signature byte
  316. SeeAlso: AX=0600h,AX=0601h,AX=0603h,AX=0604h
  317. ----------160603-----------------------------
  318. INT 16 - AAKEYS - GET KEY-EVENT BUFFER
  319.     AX = 0603h
  320. Return:    ES:BX -> 256-byte circular key-event buffer
  321.     ES:[AX] = offset of head of buffer
  322.     ES:[AX+1] = offset of tail of buffer
  323. SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0604h
  324. ----------160604-----------------------------
  325. INT 16 - AAKEYS - EMPTY BIOS KEYBOARD BUFFER
  326.     AX = 0604h
  327. Return:    AX destroyed
  328. SeeAlso: AX=0600h,AX=0601h,AX=0602h,AX=0603h
  329. --------B-1609-------------------------------
  330. INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
  331.     AH = 09h
  332. Return: AL = supported keyboard functions (see #00585)
  333.     AH destroyed by many BIOSes
  334. Note:    this function is only available if bit 6 of the second feature byte
  335.       returned by INT 15/AH=C0h is set (see #00509)
  336. SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
  337.  
  338. Bitfields for supported keyboard functions:
  339. Bit(s)    Description    (Table 00585)
  340.  7    reserved
  341.  6    INT 16/AH=20h-22h supported (122-key keyboard support)
  342.  5    INT 16/AH=10h-12h supported (enhanced keyboard support)
  343.  4    INT 16/AH=0Ah supported
  344.  3    INT 16/AX=0306h supported
  345.  2    INT 16/AX=0305h supported
  346.  1    INT 16/AX=0304h supported
  347.  0    INT 16/AX=0300h supported
  348. SeeAlso: #00511
  349. --------K-160A-------------------------------
  350. INT 16 - KEYBOARD - GET KEYBOARD ID
  351.     AH = 0Ah
  352. Return: BX = keyboard ID (see #00586)
  353.     AH destroyed by many BIOSes
  354. Notes:    check return value from AH=09h to determine whether this function is
  355.       supported
  356.     this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
  357.       replacement
  358. SeeAlso: AH=09h,AX=AF4Dh,MEM 0040h:00C2h"AMI"
  359.  
  360. (Table 00586)
  361. Values for keyboard ID:
  362.  0000h    no keyboard attached
  363.  41ABh    Japanese "G" keyboard (translate mode)
  364.     MF2 Keyboard (usually in translate mode)
  365.  54ABh    Japanese "P" keyboard (translate mode)
  366.  83ABh    Japanese "G" keyboard (pass-through mode)
  367.     MF2 Keyboard (pass-through mode)
  368.  84ABh    Japanese "P" keyboard (pass-through mode)
  369.  90ABh    old Japanese "G" keyboard
  370.  91ABh    old Japanese "P" keyboard
  371.  92ABh    old Japanese "A" keyboard
  372. --------B-1610-------------------------------
  373. INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
  374.     AH = 10h
  375. Return: AH = BIOS scan code
  376.     AL = ASCII character
  377. Notes:    if no keystroke is available, this function waits until one is placed
  378.       in the keyboard buffer
  379.     the BIOS scan code is usually, but not always, the same as the hardware
  380.       scan code processed by INT 09.  It is the same for ASCII keystrokes
  381.       and most unshifted special keys (F-keys, arrow keys, etc.), but
  382.       differs for shifted special keys.
  383.     unlike AH=00h, this function does not discard extended keystrokes
  384.     INT 16/AH=09h can be used to determine whether this function is
  385.       supported, but only on later model PS/2s
  386. SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h,MEM 0040h:0019h,MEM 0040h:001Eh
  387. --------B-1611-------------------------------
  388. INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
  389.     AH = 11h
  390. Return: ZF set if no keystroke available
  391.     ZF clear if keystroke available
  392.         AH = BIOS scan code
  393.         AL = ASCII character
  394. Notes:    if a keystroke is available, it is not removed from the keyboard buffer
  395.     unlike AH=01h, this function does not discard extended keystrokes
  396.     some versions of the IBM BIOS Technical Reference erroneously report
  397.       that CF is returned instead of ZF
  398.     INT 16/AH=09h can be used to determine whether this function is
  399.       supported, but only on later model PS/2s
  400. SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h,INT 09,INT 15/AH=4Fh
  401. --------B-1612-------------------------------
  402. INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
  403.     AH = 12h
  404. Return: AL = shift flags 1 (same as returned by AH=02h) (see #00587)
  405.     AH = shift flags 2 (see #00588)
  406. Notes:    AL bit 3 set only for left Alt key on many machines
  407.     AH bits 7 through 4 always clear on a Compaq SLT/286
  408.     INT 16/AH=09h can be used to determine whether this function is
  409.       supported, but only on later model PS/2s
  410.     many BIOSes (including at least some versions of Phoenix and AMI) will
  411.       destroy AH on return from functions higher than AH=12h, returning
  412.       12h less than was in AH on entry (due to a chain of DEC/JZ
  413.       instructions)
  414. SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh,MEM 0040h:0017h
  415.  
  416. Bitfields for keyboard shift flags 1:
  417. Bit(s)    Description    (Table 00587)
  418.  7    Insert active
  419.  6    CapsLock active
  420.  5    NumLock active
  421.  4    ScrollLock active
  422.  3    Alt key pressed (either Alt on 101/102-key keyboards)
  423.  2    Ctrl key pressed (either Ctrl on 101/102-key keyboards)
  424.  1    left shift key pressed
  425.  0    right shift key pressed
  426. SeeAlso: #00582,#00588,MEM 0040h:0017h,#M0010
  427.  
  428. Bitfields for keyboard shift flags 2:
  429. Bit(s)    Description    (Table 00588)
  430.  7    SysReq key pressed (SysReq is often labeled SysRq)
  431.  6    CapsLock pressed
  432.  5    NumLock pressed
  433.  4    ScrollLock pressed
  434.  3    right Alt key pressed
  435.  2    right Ctrl key pressed
  436.  1    left Alt key pressed
  437.  0    left Ctrl key pressed
  438. SeeAlso: #00587,MEM 0040h:0018h,#M0011
  439. --------J-1613-------------------------------
  440. INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
  441.     AH = 13h
  442.     AL = function
  443.         00h set shift status
  444.         DX = shift status (see #00589), must preserve internal status
  445.               bits
  446.         01h get shift status
  447.         Return: DX = current shift status (see #00589)
  448. Note:    these functions are supplied by the Japanese Front-End Processor
  449. SeeAlso: AH=14h,INT 21/AX=6301h
  450.  
  451. Bitfields for DOS/V shift status:
  452. Bit(s)    Description    (Table 00589)
  453.  0    full-size rather than half-size
  454.  2-1    character input mode
  455.     00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
  456.  5-3    internal status
  457.  6    Romaji enabled
  458.  7    Katakana to Kanji conversion enabled
  459.  15-8    internal status
  460. --------J-1614-------------------------------
  461. INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
  462.     AH = 14h
  463.     AL = function
  464.         00h enable display
  465.         01h disable display
  466.         02h get display state
  467.         Return: AL = current state (00h enabled, 01h disabled)
  468. Desc:    control the screen-bottom shift status row(s) for the Japanese
  469.       Front-End Processor
  470. SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
  471. --------B-1620-------------------------------
  472. INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
  473.     AH = 20h
  474. Return: AH = BIOS scan code (see AH=10h)
  475.     AL = ASCII character
  476. Note:    use AH=09h to determine whether this function is supported
  477. SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
  478. --------b-1620------------------------------------
  479. INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
  480.     AH = 20h
  481.     AL = shift status (see #00590)
  482. Notes:    the Husky Hunter 16 is an 8088-based ruggedized laptop.     Other family
  483.       members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
  484.     the user can override the specified settings by pressing the keys
  485.  
  486. Bitfields for HUNTER 16 shift status:
  487. Bit(s)    Description    (Table 00590)
  488.  4    Scroll Lock on
  489.  5    Num Lock on
  490.  6    Caps Lock on
  491. --------K-1620-------------------------------
  492. INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
  493.     AH = 20h
  494. Return: AX = K3 version
  495.     ES:BX -> extended keyboard buffer start
  496.     ES:DX -> extended keyboard buffer end
  497.     ES:SI -> next keystroke
  498.     ES:DI -> last keystroke in buffer
  499.     CX = number of keystrokes in buffer
  500. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  501.       Frinke, originally based on the K3 extended German keyboard driver
  502.       by Martin Gerdes published in c't magazine in 1988
  503. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  504.       is no longer supported by v6.30+; use AX=AF20h instead
  505. SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
  506. --------B-1621-------------------------------
  507. INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
  508.     AH = 21h
  509. Return: ZF set if no keystroke available
  510.     ZF clear if keystroke available
  511.         AH = BIOS scan code
  512.         AL = ASCII character
  513. Notes:    use AH=09h to determine whether this function is supported
  514.     some versions of the IBM BIOS Technical Reference erroneously report
  515.       that CF is returned instead of ZF
  516.     K3PLUS v6.00+ supports this function as an alias of AH=11h
  517. SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
  518. --------b-1621------------------------------------
  519. INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
  520.     AH = 21h
  521.     AL = shift keys to control (see #00582)
  522.     BL = shift state for disabled keys
  523. Note:    If a bit in AL is set the key is disabled and set to the state of the
  524.       corresponding bit in BL
  525. SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
  526. --------B-1622-------------------------------
  527. INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
  528.     AH = 22h
  529. Return: AL = shift flags 1 (see #00587)
  530.     AH = shift flags 2 (see #00588)
  531. Notes:    use AH=09h to determine whether this function is supported
  532.     K3PLUS v6.00+ supports this function as an alias of AH=12h
  533. SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
  534. --------b-1622------------------------------------
  535. INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
  536.     AH = 22h
  537.     AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
  538.     BX = 0708h
  539.     CX = 0910h
  540.     DX = 1112h
  541. Return: AL = 00h if successful
  542. SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
  543. --------b-1623------------------------------------
  544. INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
  545.     AH = 23h
  546.     AL = new state of breakout (00h enabled, nonzero disabled)
  547.     BX = 0708h
  548.     CX = 0910h
  549.     DX = 1112h
  550. Return: AL = 00h if successful
  551. Desc:    Enables or disables the emergency breakout feature, where the
  552.       Hunter 16 at power on checks whether the X and P keys are pressed.
  553.       If so the machine will boot rather than continue the running program
  554. SeeAlso: AH=22h"HUNTER"
  555. --------b-1624------------------------------------
  556. INT 16 - HUNTER 16 - REDEFINE KEY CODES
  557.     AH = 24h
  558.     AL = Matrix Code (see #00591)
  559.     BL = new Key code
  560. Return: AL = status (00h successful, nonzero failed)
  561. SeeAlso: AH=2Bh,AH=2Ch
  562.  
  563. (Table 00591)
  564. Values for HUNTER 16 Matrix Code:
  565.  Code  Key        Code    Key        Code    Key
  566.  00h   Esc key        1Eh    Space        3Bh    L
  567.  01h   1        21h    0        3Ch    ,
  568.  02h   Q        22h    -        3Eh    Right shift
  569.  03h   Tab        23h    '        42h    8
  570.  04h   Num Lock        24h    Keypad 4    43h    7
  571.  05h   \        25h    Enter        44h    U
  572.  08h   LShift        26h    Keypad 7    45h    I
  573.  09h   Ctrl        27h    .        46h    J
  574.  0Ah   "Paw" key    28h    Keypad 1    47h    K
  575.  0Bh   2        29h    Keypad 0    48h    M
  576.  0Ch   W        2Ch    =        49h    N
  577.  0Dh   A        2Dh    Backspace    4Ah    /
  578.  0Eh   S        2Eh    Keypad 8    4Dh    6
  579.  0Fh   Z        2Fh    Keypad 9    4Eh    5
  580.  11h   Alt        30h    Keypad 5    4Fh    T
  581.  16h   4        31h    Keypad 6    50h    Y
  582.  17h   3        32h    Keypad 2    51h    G
  583.  18h   E        33h    Keypad 3    52h    H
  584.  19h   R        34h    Keypad .    53h    B
  585.  1Ah   D        37h    9        54h    V
  586.  1Bh   F        38h    O        55h    #
  587.  1Ch   X        39h    P        58h    Pwr
  588.  1Dh   C        3Ah    ;        59h    Shift Pwr
  589. --------b-1625------------------------------------
  590. INT 16 - HUNTER 16 - RESET KEYBOARD
  591.     AH = 25h
  592. Return: AL = 00h
  593. Desc:    restores the standard keyboard layout after any remapping
  594. SeeAlso: AH=24h,AH=2Bh,AH=2Ch
  595. --------K-1625-------------------------------
  596. INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
  597.     AH = 25h
  598.     CX = number of keystrokes to copy
  599.     ES:SI -> buffer containing keystrokes
  600. Return: CF clear if successful
  601.     CF set on error (i.e. buffer full)
  602.         CX = number of keystrokes NOT transferred
  603.         ES:SI -> first keystroke not transferred
  604. Note:    this function was normally unsupported under K3PLUS v6.00-v6.22 and
  605.       is no longer supported by v6.30+; use AX=AF25h instead
  606. SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
  607. --------b-1626------------------------------------
  608. INT 16 - HUNTER 16 - CONTROL KEYCLICK
  609.     AH = 26h
  610.     AL = new state of keyclicks (00h disabled, 01h enabled)
  611. Return: AL = 00h
  612. SeeAlso: AH=2Ah
  613. --------b-1627------------------------------------
  614. INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
  615.     AH = 27h
  616.     AL = what to dump
  617.         00h whole (virtual) window
  618.         01h LCD window only
  619. Return: AL = 00h
  620. Desc:    control whether printscren dumps the whole 80x25 screen or only the
  621.       part displayed in the LCD window
  622. Note:    the Hunter 16 has a 240x64 LCD display which serves as a window into
  623.       a 640x200 virtual screen
  624. --------b-1629------------------------------------
  625. INT 16 - HUNTER 16 - GET KEY REPEAT
  626.     AH = 29h
  627. Return: BL = Typematic rate (characters per second) (see #00592)
  628.     BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
  629. SeeAlso: AH=03h,AH=2Ah
  630.  
  631. (Table 00592)
  632. Values for HUNTER 16 Typematic rate:
  633.  00h    30.0     08h    15.0     10h    7.5     18h    3.7
  634.  01h    26.7     09h    13.3     11h    6.7     19h    3.3
  635.  02h    24.0     0Ah    12.0     12h    6.0     1Ah    3.0
  636.  03h    21.8     0Bh    10.9     13h    5.5     1Bh    2.7
  637.  04h    20.0     0Ch    10.0     14h    5.0     1Ch    2.5
  638.  05h    18.5     0Dh     9.2     15h    4.6     1Dh    2.3
  639.  06h    17.1     0Eh     8.6     16h    4.3     1Eh    2.1
  640.  07h    16.0     0Fh     8.0     17h    4.0     1Fh    2.0
  641. SeeAlso: AH=2Ah
  642. --------b-162A------------------------------------
  643. INT 16 - HUNTER 16 - CONTROL KEY REPEAT
  644.     AH = 2Ah
  645.     AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
  646. SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
  647. --------b-162B------------------------------------
  648. INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
  649.     AH = 2Bh
  650.     AL = which key table to redefine
  651.         00h unshifted
  652.         01h shifted
  653.         02h Numlock
  654.     BH = standard scan code of key (00h-80h)
  655.     BL = new scan code
  656. Desc:    redefine the generated scan code from BH to BL
  657. SeeAlso: AH=24h,AH=2Ah,AH=2Ch
  658. --------b-162C------------------------------------
  659. INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
  660.     AH = 2Ch
  661.     AL = Matrix code of key (see AH=29h)
  662.     BL = new key code
  663. Return: AL = status (00h success, nonzero failed)
  664. Desc:    redefine the key code generated by holding the PAW key down and
  665.       pressing the key in AL
  666. SeeAlso: AH=24h,AH=2Bh
  667. --------b-162D------------------------------------
  668. INT 16 - HUNTER 16 - CONTROL BREAK KEYS
  669.     AH = 2Dh
  670.     AL = enabled break keys
  671.         bit 0 Ctrl-C
  672.         bit 1 Ctrl-Break
  673.     BX = 0708h
  674.     CX = 0910h
  675.     DX = 1112h
  676. Return: AL = status (00h success, FFh failed)
  677. SeeAlso: AH=21h"HUNTER"
  678. --------U-163577-----------------------------
  679. INT 16 U - TextWare TWTSR - API
  680.     AX = 3577h
  681.     CX = function
  682.         00CBh ???
  683.         Return: AX = 0000h
  684.             BX = 0000h
  685.             DX:CX -> ???
  686.         00CCh uninstall
  687.         Return: AX = status
  688.                 0000h successful
  689.                 FFFDh unable to unload because vectors taken
  690.         00CDh ???
  691.         Return: AX = 0000h
  692.             BX = 0000h
  693.             DX:CX -> ???
  694.         other
  695.         Return: AX = 5345h ('SE')
  696. Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
  697.       popped up via hotkey
  698. SeeAlso: AX=D724h
  699. --------U-164252-----------------------------
  700. INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
  701.     AX = 4252h
  702. Return: AX = 5242h if installed
  703. Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
  704.       the PC Magazine utility CAPTURE written by Tom Kihlken
  705. SeeAlso: AX=4253h,AX=4254h
  706. --------U-164253-----------------------------
  707. INT 16 - TEXTCAP 2.0 - UNINSTALL
  708.     AX = 4253h
  709. Return: AX = segment of resident code
  710. Notes:    the uninstall code does not check whether interrupt vectors have been
  711.       chained by other programs
  712.     the caller must free the main memory block (using the returned segment)
  713. SeeAlso: AX=4252h,AX=4254h
  714. --------U-164254-----------------------------
  715. INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
  716.     AX = 4254h
  717. Return: AX = status
  718.         4254h if screen dump will be written as soon as disk becomes idle
  719.         5442h if screen dump written
  720. SeeAlso: AX=4252h,AX=4253h
  721. --------e-164500-----------------------------
  722. INT 16 - Shamrock Software EMAIL - GET STATUS
  723.     AX = 4500h
  724.     DL = port number (01h = COM1)
  725.     ES:BX -> 13-byte buffer for ASCIZ name
  726. Return: AX = 4D00h if EMAIL installed on specified port
  727.         ES:BX -> "" if no connection
  728.           -> "*" if connection but caller has not identified name
  729.           -> name otherwise
  730.         CX = version (CH = major, CL = minor)
  731.         DL = privilege level of user (00h = guest)
  732.         DH = chosen language (00h German, 01h English)
  733. SeeAlso: AX=4501h,AX=4502h
  734. --------e-164501-----------------------------
  735. INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
  736.     AX = 4501h
  737.     DL = port number (01h = COM1)
  738. Return: AX = 4D00h if EMAIL installed on specified port
  739.         BX = maximum connect time in clock ticks
  740.         CX = maximum connect time for guests (without name) in clock ticks
  741.         DX = elapsed connect time of current user in clock ticks
  742. SeeAlso: AX=4500h
  743. --------e-164502-----------------------------
  744. INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
  745.     AX = 4502h
  746.     DL = port number (01h = COM1)
  747. Return: AX = 4D00h if EMAIL installed on specified port
  748.         BL = current value of serial port's Line Control Register
  749.         BH = flags (see #00593)
  750.         CX = selected country code (33 = France, 49 = Germany, etc)
  751.         DX = baudrate divisor (115200/DX = baudrate)
  752. SeeAlso: AX=4500h
  753.  
  754. Bitfields for Shamrock Software EMAIL flags:
  755. Bit(s)    Description    (Table 00593)
  756.  0    ISO code
  757.  1    pause
  758.  2    linefeed
  759.  3    ANSI sequences
  760. --------e-164503-----------------------------
  761. INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
  762.     AX = 4503h
  763.     DL = port number (01h = COM1)
  764.     DH = maximum execution time in clock ticks (00h = 5 seconds)
  765.     ES:BX -> ASCIZ string with new user command-word
  766. Return: AX = 4D00h if EMAIL installed on specified port
  767. Notes:    a single user command (consisting of only uppercase letters and digits)
  768.       may be defined, and remains valid until it is overwritten or the
  769.       EMAIL program terminates; the user command must be activated by
  770.       calling AX=4504h at least once.
  771.     an existing command word may be redefined with this function
  772. SeeAlso: AX=4504h,AX=4505h
  773. --------e-164504-----------------------------
  774. INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
  775.     AX = 4504h
  776.     DL = port number (01h = COM1)
  777.     ES:BX -> 80-byte buffer for ASCIZ user input line
  778. Return: AX = 4D00h if EMAIL installed on specified port
  779.         DL = flags
  780.         bit 0: user function supported (always set)
  781.         bit 1: user entered user-function command word
  782.         if DL bit 1 set,
  783.         ES:BX buffer contains line entered by user which begins with
  784.             the defined command word and has been converted to all
  785.             caps
  786. Note:    caller must process the returned commandline and invoke AX=4505h
  787.       within five seconds with the result of that processing
  788. SeeAlso: AX=4503h,AX=4505h
  789. --------e-164505-----------------------------
  790. INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
  791.     AX = 4505h
  792.     DL = port number (01h = COM1)
  793.     DH = error flag
  794.         bit 3: set on error
  795.     ES:BX -> ASCIZ text to return to user, max 1024 bytes
  796. Return: AH = 4Dh if EMAIL installed on specified port
  797.     AL = status
  798.         00h successful
  799.         02h unable to perform function (timeout, prev call not complete)
  800.         other error
  801. Notes:    if the error flag in DH is set, the string is not sent and an error
  802.       message is generated instead; if this function is not called within
  803.       five seconds of AX=4504h, EMAIL automatically generates an error
  804.       message
  805.     the string is copied into an internal buffer, allowing this function's
  806.       caller to continue immediately
  807. SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
  808. --------e-164506-----------------------------
  809. INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
  810.     AX = 4506h
  811.     DL = port number (01h = COM1)
  812.     ES:BX -> 13-byte buffer for ASCIZ filename
  813. Return: AX = 4D00h if EMAIL installed on specified port
  814.         DH = Xmodem status
  815.         00h no XGET command given
  816.         01h XGET in progress
  817.         02h XGET completed successfully
  818.         ES:BX buffer filled with last filename given to XGET command
  819.         (without path)
  820. Note:    DH=02h will only be returned once per XGET; subsequent calls will
  821.       return DH=00h
  822. SeeAlso: AX=4500h,INT 17/AX=2408h
  823. --------K-164B-------------------------------
  824. INT 16 - Frank Klemm Keyboard Driver v2.0 - API
  825.     AH = 4Bh
  826.     CX = code or action
  827.         0000h-FEFFh key code
  828.         FF00h-FFFFh action (see #00594)
  829.     BL = scan code (normal keys) or scan code + 60h (enhanced keys)
  830.     BH = shift state (see #00595)
  831. Return: CX = previous code or action
  832.  
  833. (Table 00594)
  834. Values for Frank Klemm Keyboard Driver action code:
  835.  FF00h    no action
  836.  FF01h    hardcopy
  837.  FF02h    left shift
  838.  FF03h    right shift
  839.  FF04h    left Ctrl
  840.  FF05h    right Ctrl
  841.  FF06h    left Alt
  842.  FF07h    right Alt / AltGr
  843.  FF08h    CapsLock
  844.  FF09h    NumLock
  845.  FF0Ah    ScrlLock
  846.  FF0Bh    Insert (returns code 5200h or 52E0h)
  847.  FF0Ch    Pause
  848.  FF0Dh    Ctrl-Break function
  849.  FF0Eh    warm boot via far jump to F000h:FFF0h
  850.  FF0Fh    terminate current program
  851.  FF10h    key for entering keys via Alt-numpad (read-only)
  852.  FF11h    clear keyboard buffer
  853.  FF12h    reset (warmboot on XT)
  854.  FF13h    mouse sensitivity (read-only)
  855.  FF14h    keyjobs (read-only)
  856.  FF15h    SysRq
  857.  FF16h    turn on CPU cache (486+)
  858.  FF17h    turn off CPU cache (486+)
  859. SeeAlso: #00595
  860.  
  861. (Table 00595)
  862. Values for Frank Klemm Keyboard Driver shift state:
  863.  00h    no shift keys
  864.  01h    either Shift
  865.  02h    either Ctrl
  866.  03h    left Alt
  867.  04h    Ctrl + Alt
  868. ---standard keyboard---
  869.  05h    right Alt / AltGr
  870. ---Russian keyboard---
  871.  05h    Russian + no shift keys
  872.  06h    Russian + either Shift
  873. SeeAlso: #00594
  874. --------K-164D4F-----------------------------
  875. INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
  876.     AX = 4D4Fh
  877. Return: AX = 6F6Dh if installed
  878.         ES = segment of resident code
  879. Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
  880. SeeAlso: INT 10/AX=1130h/BX=4D4Fh
  881. --------J-165000-----------------------------
  882. INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
  883.     AX = 5000h
  884.     BX = country code
  885.         0001h USA (English), 0051h Japan
  886. Return: AL = status
  887.         00h successful
  888.         01h bad country code
  889.         02h other error
  890. Notes:    the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
  891.       supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
  892.       Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
  893.       <Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
  894.     In transparent mode (BX=0001h), K3PLUS chains to the underlying
  895.       driver (normally the BIOS driver with US-layout). K3PLUS beeps on
  896.       mode changes
  897. SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
  898. --------J-165001-----------------------------
  899. INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
  900.     AX = 5001h
  901. Return: AL = status
  902.         00h successful
  903.         BX = country code
  904.         02h error
  905. Note:    also supported by K3PLUS v6.00+
  906. SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
  907. --------J-1651-------------------------------
  908. INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
  909.     AH = 51h
  910. Return: AL = standard shift key states (see #00582,#00587)
  911.     AH = Kana lock (00h off, 01h on)
  912. Note:    also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
  913. SeeAlso: AH=02h,AH=12h,AH=22h
  914. --------t-165453BX5242-----------------------
  915. INT 16 - TSRBONES - INSTALLATION CHECK
  916.     AX = 5453h ('TS')
  917.     BX = 5242h ('RB')
  918.     CX = 4F4Eh ('ON')
  919.     DX = 4553h ('ES')
  920. Return: AX = 4553h if installed
  921.     BX = 4F4Eh if installed
  922.     CX = 5242h if installed
  923.     DX = 5453h if installed
  924. Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
  925. Note:    these values are the default as the TSRBONES package is distributed,
  926.       but will normally be changed when implementing an actual TSR with
  927.       the TSRBONES skeleton
  928. SeeAlso: INT 2D/AL=00h"AMIS"
  929. --------K-165472BX4C54-----------------------
  930. INT 16 - TrLit - API
  931.     AX = 5472h ('Tr')
  932.     BX = 4C54h ('Lt')
  933.     CL = function
  934.         00h installation check
  935.         Return:    DX = 1234h if installed
  936.                 AX = 100*version (binary, 00E9h = v2.33)
  937.                 CX = resident code segment
  938.         01h get original INT 09 vector
  939.         Return: ES:BX -> previous handler
  940.         02h get original INT 16 vector
  941.         Return: ES:BX -> previous handler
  942.         else chained
  943.     CH = 00h (for backward compatibility with versions before 2.30)
  944. Program: TrLit is a Russian keyboard transliterator by Rostislav Krasny
  945. Index:    installation check;TrLit
  946. --------A-165500-----------------------------
  947. INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
  948.     AX = 5500h
  949. Return: AX = 4D53h ('MS') if keyboard TSR present
  950. Notes:    during startup, Microsoft Word tries to communicate with any TSRs
  951.       that are present through this call.
  952.     if the return is not 4D53h, Word installs its own INT 09 and INT 16
  953.       handlers; otherwise it assumes that the TSR will handle the keyboard
  954. SeeAlso: AX=55FFh,INT 1A/AX=3601h
  955. --------A-1655FE-----------------------------
  956. INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
  957.     AX = 55FEh
  958.     DX = function
  959.         0000h initialize
  960.         ES:BX -> ??? function
  961.         ES:CX -> ??? structure
  962.         FFFFh shutdown/reset
  963. Return: AX = result
  964.         4D4Bh only the INT 1B handler will be installed.
  965.         other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
  966.           are installed
  967. Notes:    The pointer in ES:CX seems to point at a structure defining a callback
  968.       function when new keyboard keys are pressed. If a TSR returns
  969.       AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
  970.     these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
  971.       and before/after shelling out
  972.     since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
  973.       will also cause this interface to be invoked
  974.     K3PLUS v6.07+ supports this function, but will never invoke the
  975.       callback function
  976. SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
  977. --------U-1655FF-----------------------------
  978. INT 16 C - Microsoft Word - TSR COOPERATION???
  979.     AX = 55FFh
  980.     BX >= 0004h (version of Microsoft Word [BL = major] ???)
  981.     CX = function
  982.         0000h set ??? flag
  983.         other clear ??? flag
  984. Notes:    hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
  985.       distributed with PC Tools v7, as well as the Trusted Access
  986.       SCRNBLNK.COM; this may be part of the standard TesSeRact library
  987.     known to be called by the German edition of Microsoft Word 5.0
  988. SeeAlso: AX=5500h,INT 2F/AX=5453h
  989. --------c-165758BX4858-----------------------
  990. INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
  991.     AX = 5758h
  992.     BX = 4858h ('HX')
  993.     DX = 4443h ('DC')
  994.     CX <> 5758h
  995. Return: BX = 6878h if installed
  996.     CX = 6463h if installed
  997.         AX = code segment of TSR
  998.         CX = internal version??? (v3.00 returns 0100h)
  999. Program: CACHECLK is a "cloaked" disk cache included with Netroom
  1000. Notes:    if CX=5758h on entry, CACHECLK returns with all registers unchanged
  1001.     the cache statistics are located early in the segment pointed at by
  1002.       AX on return
  1003. SeeAlso: INT 2F/AX=5758h
  1004. --------m-165758BX5754-----------------------
  1005. INT 16 U - Netroom ??? - ???
  1006.     AX = 5758h
  1007.     BX = 5754h
  1008.     ???
  1009. Return: ???
  1010. --------m-165758BX5755-----------------------
  1011. INT 16 U - Netroom ??? - ???
  1012.     AX = 5758h
  1013.     BX = 5755h
  1014.     DS:SI -> ???
  1015. Return: ???
  1016. --------m-165758BX5756-----------------------
  1017. INT 16 U - Netroom ??? - INSTALLATION CHECK
  1018.     AX = 5758h
  1019.     BX = 5756h
  1020. Return: BX <> 5756h if installed
  1021. --------m-165758BX5858-----------------------
  1022. INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
  1023.     AX = 5758h
  1024.     BX = 5858h
  1025. Return: CF clear
  1026.     DX:BX -> saved copy of interrupt vector table
  1027. InstallCheck:    call this function and compare BX against 5858h on return; if
  1028.       it has changed, PRENET is installed
  1029. SeeAlso: AX=5758h/BX=5859h
  1030. Index:    installation check;Netroom PRENET
  1031. --------m-165758BX5859-----------------------
  1032. INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
  1033.     AX = 5758h
  1034.     BX = 5859h
  1035. Return: CF clear
  1036.     DX:BX -> saved copy of interrupt vector table
  1037. InstallCheck:    call this function and compare BX against 5859h on return; if
  1038.       it has changed, POSTNET is installed
  1039. SeeAlso: AX=5758h/BX=5858h
  1040. Index:    installation check;Netroom POSTNET
  1041. ----------1667-------------------------------
  1042. INT 16 - Doorway v2.x+ - INSTALLATION CHECK / REDIRECTION CONTROLa
  1043.     AH = 67h
  1044.     AL = Doorway mode
  1045.         00h turn off DOS redirection
  1046.         01h turn on DOS redirection
  1047. Return: AH = 80h if Doorway is actively redirecting output
  1048.         AL = 80h if Doorway was already in requested mode
  1049. Program: Doorway is a program by Marshall Dudley which allows most DOS programs
  1050.       to run as a BBS door without modification
  1051. Note:    to perform an installation check without changing the redirection
  1052.       state, if is necessary to restore the original mode if AL was not
  1053.       80h on return
  1054. SeeAlso: INT 10/AH=BBh"Doorway"
  1055. --------U-166969BX6968-----------------------
  1056. INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
  1057.     AX = 6969h
  1058.     BX = 6968h
  1059. Return: resident code unhooked, but not removed from memory
  1060. Index:    uninstall;BACKTALK
  1061. --------U-166969BX6969-----------------------
  1062. INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
  1063.     AX = 6969h
  1064.     BX = 6969h
  1065.     DX = 0000h
  1066. Return: DX nonzero if installed
  1067.         BX = CS of resident code
  1068.         DX = PSP segment of resident code
  1069.         DS:SI -> ASCIZ identification string "CPoint Talk"
  1070. --------i-166A6B-----------------------------
  1071. INT 16 U - FastJuice - DISABLE/UNLOAD???
  1072.     AX = 6A6Bh
  1073. Return: ???
  1074. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  1075. SeeAlso: AX=7463h
  1076. Index:    uninstall;FastJuice
  1077. --------G-166C63-----------------------------
  1078. INT 16 U - TMED v1.6a - INSTALLATION CHECK
  1079.     AX = 6C63h ('lc')
  1080. Return: AX = 4C43h ('LC') if installed
  1081. Program: TMED is a freeware resident memory editor by Liang Chen
  1082. --------U-166D74-----------------------------
  1083. INT 16 - MTRTSR - INSTALLATION CHECK
  1084.     AX = 6D74h ('mt')
  1085. Return: AX = 4D54h ('MT') if installed
  1086. Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which
  1087.       permits searching the large corpus of classical Hebrew texts in the
  1088.       package
  1089. SeeAlso: INT 10/AX=6D74h"MTRFONTS"
  1090. --------b-166F00-----------------------------
  1091. INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK
  1092.     AX = 6F00h
  1093.     BX <> 4850h (usually set to 0000h for simplicity)
  1094. Return: BX = 4850h ("HP") if present
  1095. Notes:    called by recent MS Mouse drivers looking for an HP-HIL mouse
  1096.     supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1097. SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h
  1098. SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
  1099. SeeAlso: INT 6F/AH=00h"HP Vectra"
  1100. --------b-166F01-----------------------------
  1101. INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES
  1102.     AX = 6F01h
  1103. Return: AH = 00h (successful)
  1104.     CX = 0004h (size of returned buffer)
  1105.     ES:SI -> buffer for typematic info (see #00596)
  1106. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1107. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  1108.  
  1109. Format of HP Vectra EX-BIOS typematic info:
  1110. Offset    Size    Description    (Table 00596)
  1111.  00h    BYTE    delay before repeat for all non-Cursor Control Pad keys
  1112.         (see #00597)
  1113.  01h    BYTE    typematic rate for all non-Cursor Control Pad keys (see #00598)
  1114.  02h    BYTE    delay before repeat for Cursor Control Pad keys    (see #00599)
  1115.  03h    BYTE    typematic rate for Cursor Control Pad keys (see #00598)
  1116.  
  1117. (Table 00597)
  1118. Values for HP Vectra EX-BIOS non-CCP delay time:
  1119.  00h    17 ms
  1120.  01h    150 ms
  1121.  02h    283 ms
  1122.  03h    417 ms
  1123.  04h    550 ms
  1124.  05h    683 ms
  1125.  06h    817 ms
  1126.  07h    950 ms
  1127.  08h    1083 ms
  1128.  09h    1217 ms
  1129.  0Ah    1350 ms
  1130.  0Bh    1483 ms
  1131.  0Ch    1617 ms
  1132.  0Dh    1750 ms
  1133.  0Eh    1883 ms
  1134.  0Fh    2017 ms
  1135. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  1136.       double the times if set to 30 Hz
  1137. SeeAlso: #00596,#00598,#00599
  1138.  
  1139. (Table 00598)
  1140. Values for HP Vectra EX-BIOS typematic rate:
  1141.  00h    60 / sec
  1142.  01h    30 / sec
  1143.  02h    20
  1144.  03h    15
  1145.  04h    12
  1146.  05h    10
  1147.  06h    8.57
  1148.  07h    7.5
  1149.  08h    6.66
  1150.  09h    6 / sec
  1151.  0Ah    5.45
  1152.  0Bh    5
  1153.  0Ch    4.62
  1154.  0Dh    4.28
  1155.  0Eh    4 / sec
  1156.  0Fh    typematic disabled
  1157. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  1158.       halve the rates if set to 30 Hz
  1159. SeeAlso: #00597,#00599
  1160.  
  1161. (Table 00599)
  1162. Values for HP Vectra EX-BIOS CCP delay time:
  1163.  00h    17 ms
  1164.  01h    83 ms
  1165.  02h    150 ms
  1166.  03h    217 ms
  1167.  04h    283 ms
  1168.  05h    350 ms
  1169.  06h    417 ms
  1170.  07h    483 ms
  1171.  08h    550 ms
  1172.  09h    617 ms
  1173.  0Ah    683 ms
  1174.  0Bh    750 ms
  1175.  0Ch    817 ms
  1176.  0Dh    883 ms
  1177.  0Eh    950 ms
  1178.  0Fh    1017 ms
  1179. Note:    the above values assume that the key repeat rate has been set to 60 Hz;
  1180.       double the times if set to 30 Hz
  1181. SeeAlso: #00597,#00598
  1182. --------b-166F02-----------------------------
  1183. INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES
  1184.     AX = 6F02h
  1185. Return: AH = 00h (successful)
  1186.     CX = 0004h (size of returned buffer)
  1187.     ES:SI -> buffer for typematic info (see #00596)
  1188. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1189. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  1190. SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h
  1191. --------b-166F03-----------------------------
  1192. INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES
  1193.     AX = 6F03h
  1194.     ES:SI -> buffer containing typematic info (see #00596)
  1195. Return: AH = 00h (successful)
  1196. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1197. SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
  1198. SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h
  1199. --------b-166F04-----------------------------
  1200. INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS
  1201.     AX = 6F04h
  1202.     ES:SI -> mapping buffer (see #00600)
  1203. Return: AH = 00h (successful)
  1204.     CX = 001Eh (number of bytes in buffer)
  1205.     ES:SI buffer filled
  1206. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1207.     the HIL input system translates the HIL keyboard events to simulate
  1208.       an IBM-compatible keyboard; the translation can be altered
  1209.       dynamically by applications
  1210. SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h
  1211.  
  1212. Format of HP Vectra EX-BIOS keyboard mapping info:
  1213. Offset    Size    Description    (Table 00600)
  1214.  00h  3 WORDs    entry for V_QWERTY driver (IP, CS, DS)
  1215.  06h  3 WORDs    entry for V_SOFTKEY driver (IP, CS, DS)
  1216.  0Ch  3 WORDs    entry for V_FUNCTION driver
  1217.  12h  3 WORDs    entry for V_NUMPAD driver
  1218.  18h  3 WORDs    entry for V_CCP driver
  1219. --------b-166F05-----------------------------
  1220. INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS
  1221.     AX = 6F05h
  1222.     ES:SI -> mapping buffer (see #00600)
  1223. Return: AH = 00h (successful)
  1224.     CX = 001Eh (number of bytes in buffer)
  1225.     ES:SI buffer filled
  1226. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1227. SeeAlso: AX=6F04h,AX=6F06h
  1228. --------b-166F06-----------------------------
  1229. INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS
  1230.     AX = 6F06h
  1231.     CX = number of bytes in buffer (001Eh)
  1232.     ES:SI -> mapping buffer (see #00600)
  1233. Return: AH = 00h (successful)
  1234. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1235.     any application which modifies the key mappings should restore them
  1236.       before terminating
  1237.     drivers installed with this function are assured of 32 bytes of stack
  1238.       space when they are invoked
  1239. SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h
  1240. --------b-166F07-----------------------------
  1241. INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS
  1242.     AX = 6F07h
  1243.     BL = translation to set (see #00601)
  1244. Return: AH = 00h (successful)
  1245. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1246.     this function may no longer work properly if the application has
  1247.       modified the key mappings with AX=6F06h
  1248. SeeAlso: AX=6F06h,AX=6F09h
  1249.  
  1250. (Table 00601)
  1251. Values for HP Vectra keyboard translation specifier:
  1252.  00h    map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys
  1253.  01h    map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers
  1254.  02h    map V_CCP to V_OFF, disabling the cursor pad
  1255.  03h    map V_CCP to V_CCPGID, converting cursor pad keys to GID data
  1256.  04h    map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09
  1257.  05h    map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys
  1258.  06h    map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09
  1259.  07h    map V_SOFTKEY to V_OFF, disabling HP Softkeys
  1260. SeeAlso: #00602
  1261.  
  1262. (Table 00602)
  1263. Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator:
  1264.           INT 09         INT 16 keycode
  1265.     Key         scan code    Default     Shifted   Ctrl         Alt
  1266.  * (NumPd)    37h    2Ah     (Prt Sc)  00/72h    00/37H
  1267.  Sysreq        54h      --     --       --         --
  1268.  CCP-Up        60h    00/D9h     00/BFh       00/A5h    00/8BH
  1269.  CCP-Left    61h    00/DAh     00/C0h       00/A6h    00/8CH
  1270.  CCP-Down    62h    00/DBh     00/C1h       00/A7h    00/8DH
  1271.  CCP-Right    63h    00/DCh     00/C2h       00/A8h    00/8EH
  1272.  CCP-Home    64h    00/DDh     00/C3h       00/A9h    00/8FH
  1273.  CCP-PgUp    65h    00/DEh     00/C4h       00/AAh    00/90H
  1274.  CCP-End    66h    00/DFh     00/C5h       00/ABh    00/91H
  1275.  CCP-PgDn    67h    00/E0h     00/C6h       00/ACh    00/92H
  1276.  CCP-Ins    68h    00/E1h     00/C7h       00/ADh    00/93H
  1277.  CCP-Del    69h    00/E2h     00/C8h       00/AEh    00/94H
  1278.  CCP-CNTR    6Ah    00/E3h     00/C9h       00/AFh    00/95H
  1279.  f1        70h    00/E9h     00/CFh       00/B5h    00/9BH
  1280.  f2        71h    00/EAh     00/D0h       00/B6h    00/9CH
  1281.  f3        72h    00/EBh     00/D1h       00/B7h    00/9DH
  1282.  f4        73h    00/ECh     00/D2h       00/B8h    00/9EH
  1283.  f5        74h    00/EDh     00/D3h       00/B9h    00/9FH
  1284.  f6        75h    00/EEh     00/D4h       00/BAh    00/A0H
  1285.  f7        76h    00/EFh     00/D5h       00/BBh    00/A1H
  1286.  f8        77h    00/F0h     00/D6h       00/BCh    00/A2H
  1287. Note:    only HP-specific codes are listed in this table; see INT 09 for a full
  1288.       list of standard scan codes
  1289. SeeAlso: #00006,#00601
  1290. --------b-166F08-----------------------------
  1291. INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION
  1292.     AX = 6F08h
  1293. Return: AH = status
  1294.        00h successful
  1295.        02h unsupported (non-HIL, i.e. standard, keyboard)
  1296.     BH = HP-HIL address (HP Vectra AT only???)
  1297.     BL = HP-HIL ID (HP Vectra AT only???)
  1298.     BL = keyboard language (ES/QS/RS only???) (see #00603)
  1299. Notes:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1300.     the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may
  1301.       be computed as (BH-1)*6 + N, where N is the address of the first
  1302.       HP-HIL device driver (see INT 6F/AH=0Ah"F_INQUIRE_FIRST")
  1303. SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"F_INQUIRE_FIRST"
  1304.  
  1305. (Table 00603)
  1306. Values for HP HIL keyboard language code:
  1307.  00h    reserved
  1308.  01h    Arabic-French
  1309.  02h    Kanji
  1310.  03h    Swiss-French
  1311.  04h    Portugese
  1312.  05h    Arabic
  1313.  06h    Hebrew
  1314.  07h    Canadian-English
  1315.  08h    Turkish
  1316.  09h    Greek
  1317.  0Ah    Thai
  1318.  0Bh    Italian
  1319.  0Ch    Hangul (Korean)
  1320.  0Dh    Dutch
  1321.  0Eh    Swedish
  1322.  0Fh    German
  1323.  10h    Chinese (PRC)
  1324.  11h    Chinese (Taiwan)
  1325.  12h    Swiss (French ii)
  1326.  13h    Spanish
  1327.  14h    Swiss (German ii)
  1328.  15h    Belgian (Flemish)
  1329.  16h    Finnish
  1330.  17h    United Kingdom
  1331.  18h    French-Canadian
  1332.  19h    French-German
  1333.  1Ah    Norwegian
  1334.  1Bh    French
  1335.  1Ch    Danish
  1336.  1Dh    Katakana
  1337.  1Eh    Latin American Spanish
  1338.  1Fh    United States-American
  1339.  20h-FEh reserved
  1340.  FFh    non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard)
  1341. --------b-166F09-----------------------------
  1342. INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS
  1343.     AX = 6F09h
  1344. Return: AH = 00h (successful)
  1345. Desc:    reset all keyboard mappings to their default translators, and reset
  1346.       typematic values to their defaults
  1347. Note:    supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
  1348. SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h
  1349. --------b-166F0A-----------------------------
  1350. INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED
  1351.     AX = 6F0Ah
  1352. Return: AH = 00h (successful)
  1353.     BX = speed code
  1354.         0Bh for low speed (see #00604)
  1355.         12h for medium speed (see #00604)
  1356.         0Ch for high speed (see #00604)
  1357. Note:    supported by ES, QS, and RS series of HP Vectras
  1358. SeeAlso: AX=6F00h
  1359.  
  1360. (Table 00604)
  1361. Values for HP Vetra CPU speed:
  1362.     Vectra        Low        Medium    High
  1363.     ES        8 MHz         -         8 MHz
  1364.     ES/12        8 MHz         -        12 MHz
  1365.     QS/16, RS/16    8 MHz         -        16 MHz
  1366.     QS/16S        8 MHz         -        16 MHz
  1367.     QS/20, RS/20    8 MHz         -        20 MHz
  1368.     RS/20C        5 MHz        10 MHz    20 MHz
  1369.     RS/25C        5 MHz        12.5 MHz    25 MHz
  1370. --------b-166F0B-----------------------------
  1371. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW
  1372.     AX = 6F0Bh
  1373. Return: AH = 00h (successful)
  1374. Notes:    see AX=6F0Ah for speed definitions
  1375.     supported by ES, QS, and RS series of HP Vectras
  1376. SeeAlso: AX=6F00h,AX=6F0Ah
  1377. --------b-166F0C-----------------------------
  1378. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH
  1379.     AX = 6F0Ch
  1380. Return: AH = 00h (successful)
  1381. Notes:    see AX=6F0Ah for speed definitions
  1382.     supported by ES, QS, and RS series of HP Vectras
  1383. SeeAlso: AX=6F00h,AX=6F0Ah
  1384. --------b-166F0D-----------------------------
  1385. INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER
  1386.     AX = 6F0Dh
  1387. Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
  1388. Notes:    supported by ES, QS, and RS series of HP Vectras
  1389.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  1390.       input system
  1391. SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F/AH=00h"HP Vectra",INT 6F/AH=0Ah"HP"
  1392. --------b-166F0E-----------------------------
  1393. INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER
  1394.     AX = 6F0Eh
  1395.     BL = new interrupt number (60h-6Fh,78h-7Fh)
  1396. Return: AH = status (00h = successful)
  1397. Desc:    allows the HIL Extended BIOS software to use a non-default interrupt
  1398.       number in case of an interrupt conflict with another application
  1399. Notes:    supported by ES, QS, and RS series of HP Vectras
  1400.     called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
  1401.       input system
  1402. SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F/AH=00h"HP",INT 6F/AH=0Ah"HP"
  1403. --------b-166F0F-----------------------------
  1404. INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING
  1405.     AX = 6F0Fh
  1406. Return: AH = status
  1407.         00h successful
  1408.         FEh cache subsystem is bad
  1409. SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h
  1410. --------b-166F10-----------------------------
  1411. INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING
  1412.     AX = 6F10h
  1413. Return: AH = 00h (successful)
  1414. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h
  1415. --------b-166F11-----------------------------
  1416. INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE
  1417.     AX = 6F11h
  1418. Return: AH = 00h (successful)
  1419.     AL bit 0 = cache state
  1420.         0 cache disabled
  1421.         1 cache enabled
  1422. SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h
  1423. --------b-166F12-----------------------------
  1424. INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM
  1425.     AX = 6F12h
  1426. Return: AH = 00h (successful)
  1427. Note:    see AX=6F0Ah for speed definitions
  1428. SeeAlso: AX=6F00h,AX=6F0Ah
  1429. --------K-1670-------------------------------
  1430. INT 16 - FAKEY.COM - INSTALLATION CHECK
  1431.     AH = 70h
  1432. Return: AX = 1954h if installed
  1433. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  1434. --------K-1671-------------------------------
  1435. INT 16 - FAKEY.COM - PUSH KEYSTROKES
  1436.     AH = 71h
  1437.     CX = number of keystrokes
  1438.     DS:SI -> array of words containing keystrokes to be returned by AH=00h
  1439. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  1440. SeeAlso: AH=05h,AH=72h
  1441. --------K-1672-------------------------------
  1442. INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
  1443.     AH = 72h
  1444. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  1445. SeeAlso: AH=71h
  1446. --------K-1673-------------------------------
  1447. INT 16 - FAKEY.COM - PLAY TONES
  1448.     AH = 73h
  1449.     CX = number of tones to play
  1450.     DS:SI -> array of tones (see #00605)
  1451. Program: FAKEY is a keystroke faking utility by System Enhancement Associates
  1452. SeeAlso: INT 15/AX=1019h
  1453.  
  1454. Format of FAKEY.COM tone array entries:
  1455. Offset    Size    Description    (Table 00605)
  1456.  00h    WORD    divisor for timer channel 2
  1457.  02h    WORD    duration in clock ticks
  1458. --------i-167463-----------------------------
  1459. INT 16 U - FastJuice - INSTALLATION CHECK
  1460.     AX = 7463h ("tc")
  1461. Return: AX = 5443h ("TC") if installed
  1462. Program: FastJuice is a resident battery-power monitor by SeaSide Software
  1463. SeeAlso: AX=6A6Bh
  1464. --------R-1675-------------------------------
  1465. INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
  1466.     AH = 75h
  1467.     AL = number of ticks between checks for new screen changes
  1468. --------R-1676-------------------------------
  1469. INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
  1470.     AH = 76h
  1471.     AL = error checking type
  1472.         00h none
  1473.         01h fast
  1474.         02h slow
  1475. --------R-1677-------------------------------
  1476. INT 16 - pcANYWHERE III - LOG OFF
  1477.     AH = 77h
  1478.     AL = mode
  1479.         00h wait for another call
  1480.         01h leave in Memory Resident Mode
  1481.         02h leave in Automatic Mode
  1482.         FFh leave in current operating mode
  1483. --------U-167761-----------------------------
  1484. INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
  1485.     AX = 7761h ('wa')
  1486. Return: AX = 5741h ('WA') if installed
  1487. Note:    WATCH.COM is part of the "TSR" package by Kim Kokkonen
  1488. SeeAlso: INT 21/AX=7761h
  1489. --------U-167788BX7789-----------------------
  1490. INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
  1491.     AX = 7788h
  1492.     BX = 7789h
  1493.     DS:SI -> signature "PUSHDIR VERSION 1.0"
  1494. Return: AX = 7789h if installed and signature correct
  1495.     BX = 7788h
  1496.     SI destroyed
  1497. --------R-1679-------------------------------
  1498. INT 16 - pcANYWHERE III - CHECK STATUS
  1499.     AH = 79h
  1500. Return: AX = status
  1501.         FFFFh if resident and active
  1502.         FFFEh if resident but not active
  1503.         FFFDh if in Memory Resident mode
  1504.         FFFCh if in Automatic mode
  1505.         other value if not resident
  1506. SeeAlso: AX=7B00h,INT 21/AX=2B44h
  1507. --------R-167A-------------------------------
  1508. INT 16 - pcANYWHERE III - CANCEL SESSION
  1509.     AH = 7Ah
  1510. --------R-167B00-----------------------------
  1511. INT 16 - pcANYWHERE III - SUSPEND
  1512.     AX = 7B00h
  1513. SeeAlso: AH=79h,AX=7B01h
  1514. --------R-167B01-----------------------------
  1515. INT 16 - pcANYWHERE III - RESUME
  1516.     AX = 7B01h
  1517. SeeAlso: AH=79h,AX=7B00h
  1518. --------R-167C-------------------------------
  1519. INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
  1520.     AH = 7Ch
  1521. Return: AH = port number
  1522.     AL = baud rate (see #00606)
  1523. SeeAlso: AX=7B00h,AH=7Eh
  1524.  
  1525. (Table 00606)
  1526. Values for pcANYWHERE III baud rate:
  1527.  00h    50 baud
  1528.  01h    75 baud
  1529.  02h    110 baud
  1530.  03h    134.5 baud
  1531.  04h    150 baud
  1532.  05h    300 baud
  1533.  06h    600 baud
  1534.  07h    1200 baud
  1535.  08h    1800 baud
  1536.  09h    2000 baud
  1537.  0Ah    2400 baud
  1538.  0Bh    4800 baud
  1539.  0Ch    7200 baud
  1540.  0Dh    9600 baud
  1541.  0Eh    19200 baud
  1542. SeeAlso: #00309
  1543. --------R-167D-------------------------------
  1544. INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
  1545.     AH = 7Dh
  1546.     AL = subfunction
  1547.         00h set terminal parameters
  1548.         01h get terminal parameters
  1549.         02h get configuration header and terminal parameters
  1550.     DS:CX -> terminal parameter block
  1551. SeeAlso: AH=7Ch,AH=7Eh
  1552. --------R-167E-------------------------------
  1553. INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
  1554.     AH = 7Eh
  1555.     AL = subfunction
  1556.         01h port input status
  1557.         Return AX = 0 if no characer ready,
  1558.                AX = 1 if character ready
  1559.         02h port input character
  1560.         Return AL = received character
  1561.         03h port output character in CX
  1562.         11h hang up phone
  1563. SeeAlso: AH=7Ch
  1564. --------R-167F-------------------------------
  1565. INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
  1566.     AH = 7Fh
  1567.     AL = subfunction
  1568.         00h enable remote keyboard only
  1569.         01h enable host keyboard only
  1570.         02h enable both keyboards
  1571.         08h display top 24 lines
  1572.         09h display bottom 24 lines
  1573.         10h Hayes modem
  1574.         11h other modem
  1575.         12h direct connect
  1576. --------U-1680-------------------------------
  1577. INT 16 - MAKEY.COM - INSTALLATION CHECK
  1578.     AH = 80h
  1579. Return: AX = 1954h if installed
  1580. Program: MAKEY is a utility by System Enhancement Associates
  1581. --------K-1687-------------------------------
  1582. INT 16 - DK.COM v1.03 - INSTALLATION CHECK
  1583.     AH = 87h
  1584. Return: AX = 4A57h ('JW') if installed
  1585. Program: DK.COM is the resident part of a small keyboard macro utility
  1586.       by Digital Mechanics.
  1587. --------U-168765BX4321-----------------------
  1588. INT 16 - AT.COM version 8/26/87 - API
  1589.     AX = 8765h
  1590.     BX = 4321h
  1591.     CX = ??? or FFFFh
  1592.     if CX = FFFFh
  1593.         DX = number of event to remove or FFFFh
  1594. Return: ES:BX -> event record array (see #00607)
  1595. Program: AT.COM is a resident scheduler by Bill Frolik
  1596.  
  1597. Format of AT.COM event record:
  1598. Offset    Size    Description    (Table 00607)
  1599.  00h    BYTE    in-use flag (00h free, 01h in use, FFh end of array)
  1600.  01h    BYTE    day of date on which to trigger
  1601.  02h    BYTE    month of date on which to trigger
  1602.  03h    BYTE    trigger time, minute
  1603.  04h    BYTE    trigger time, hour
  1604.  05h    WORD    offset of command to be executed
  1605. --------K-1692-------------------------------
  1606. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  1607.     AH = 92h
  1608. Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported
  1609. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  1610.       to determine the highest supported keyboard function
  1611. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  1612.       destroy AH on return from functions higher than AH=12h, returning
  1613.       12h less than was in AH on entry (due to a chain of DEC/JZ
  1614.       instructions)
  1615. SeeAlso: AH=05h"PCjr",AH=A2h,INT 2F/AX=AD80h
  1616. --------U-1699-------------------------------
  1617. INT 16 - SCOUT v5.4 - GET ???
  1618.     AH = 99h
  1619. Return: AX = ABCDh
  1620.     BX:CX -> ??? (appears to be start of PSP for resident portion)
  1621. Program: Scout is a memory-resident file manager by New-Ware
  1622. SeeAlso: AH=9Eh
  1623. --------U-169E-------------------------------
  1624. INT 16 - SCOUT v5.4 - INSTALLATION CHECK
  1625.     AH = 9Eh
  1626. Return: AX = ABCDh if installed
  1627. Program: Scout is a memory-resident file manager by New-Ware
  1628. SeeAlso: AH=99h
  1629. --------K-16A2-------------------------------
  1630. INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
  1631.     AH = A2h
  1632. Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported
  1633. Desc:    this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
  1634.       to determine the highest supported keyboard function
  1635. Note:    many BIOSes (including at least some versions of Phoenix and AMI) will
  1636.       destroy AH on return from functions higher than AH=12h, returning
  1637.       12h less than was in AH on entry (due to a chain of DEC/JZ
  1638.       instructions)
  1639. SeeAlso: AH=05h"PCjr",AH=92h,INT 2F/AX=AD80h
  1640. --------V-16AA-------------------------------
  1641. INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
  1642.     AH = AAh
  1643.     Various registers set up by high level language.
  1644. Return: Graphics performed
  1645. Note:    PT stands for Paint Tools which is a graphics library for Turbo Pascal,
  1646.       Modula 2 and others from DataBiten in Sweden. The library is
  1647.       installed as a memory resident driver.
  1648. --------U-16AABBBXEEFF-----------------------
  1649. INT 16 U - JORJ v4.3 - INSTALLATION CHECK
  1650.     AX = AABBh
  1651.     BX = EEFFh
  1652. Return: AX = EEFFh if installed
  1653.     BX = AABBh if installed
  1654.         CL = hotkey name (default 6Ah 'j' for Alt-J)
  1655. Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
  1656.       Co.
  1657. Index:    hotkeys;JORJ
  1658. --------K-16AF20BX4B33-----------------------
  1659. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
  1660.     AX = AF20h
  1661.     BX = 4B33h ('K3')
  1662. Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
  1663.     ES:BX -> extended keyboard buffer start
  1664.     ES:DX -> extended keyboard buffer end
  1665.     ES:SI -> next keystroke
  1666.     ES:DI -> last keystroke in buffer
  1667.     CX = number of keystrokes in buffer
  1668. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  1669.       Frinke, originally based on the K3 extended German keyboard driver
  1670.       by Martin Gerdes published in c't magazine in 1988
  1671. Note:    this function replaces the identical function AH=20h"K3"
  1672. SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h
  1673. --------K-16AF25BX4B33-----------------------
  1674. INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
  1675.     AX = AF25h
  1676.     BX = 4B33h ('K3')
  1677.     CX = number of keystrokes to copy
  1678.     ES:SI -> buffer containing keystrokes
  1679. Return: CF clear if successful
  1680.     CF set on error (i.e. buffer full)
  1681.         CX = number of keystrokes NOT transferred
  1682.         ES:SI -> first keystroke not transferred
  1683. Note:    this function replaces the identical function AH=25h"K3"
  1684. SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h
  1685. --------K-16AF4DBX4B33-----------------------
  1686. INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
  1687.     AX = AF4Dh
  1688.     BX = 4B33h ('K3')
  1689. Return: AL = 50h if installed
  1690.         BX = K3 version
  1691.         DX = API version
  1692.         ES:CX -> K3 structure (version-dependent) (see #00608)
  1693. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  1694.       Frinke, originally based on the K3 extended German keyboard driver
  1695.       by Martin Gerdes published in c't magazine in 1988
  1696. SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF82h/BX=4B33h,INT 2F/AX=D44Fh/BX=0000h
  1697. SeeAlso: INT 2F/AX=ED58h
  1698. Index:    installation check;K3PLUS
  1699.  
  1700. Format of internal K3 structure:
  1701. Offset    Size    Description    (Table 00608)
  1702.  00h  3 BYTEs    signature "K3$"
  1703.  03h    BYTE    length of structure, including this byte and signature
  1704.  04h    WORD    compiler switch option flags A (see #00609)
  1705.  06h    WORD    compiler switch option flags B (see #00610)
  1706.  08h    BYTE    internal flags A (see #00611)
  1707.  09h    BYTE    internal flags B (see #00612)
  1708.  0Ah    WORD    DOS version recorded at startup
  1709.  0Ch    WORD    "ActTypeSpeed"
  1710.  0Eh    WORD    last Keyboard-ID sent
  1711.         41ABh translated, 83ABh native (pass-through)
  1712.  10h    WORD    offset of K3TAB Special
  1713.  12h    WORD    offset of K3TAB German
  1714.  14h    WORD    offset of K3TAB Alt
  1715.  16h    WORD    offset of K3TAB AltGr
  1716.  18h    WORD    offset of K3TAB Ctrl
  1717.  1Ah    WORD    offset of K3TAB NPad
  1718.  1Ch    WORD    offset of K3TAB CtrlNPad
  1719.  1Eh    WORD    offset of K3TAB AltNPad
  1720.  20h    WORD    offset of K3TAB ApoTbl or 0000h
  1721.  22h    WORD    offset of K3TAB UmlautTbl or 0000h
  1722.  24h    WORD    offset of K3TAB UmlautTblExp or 0000h
  1723.  26h    WORD    length of video mode table
  1724.  28h    WORD    offset of VidMdTbl or 0000h
  1725.  2Ah    BYTE    '$' end marker
  1726.  
  1727. Bitfields for K3PLUS compiler switch option flags A:
  1728. Bit(s)    Description    (Table 00609)
  1729.  15    GuINT16Fct2 (general use of INT 16 function 2)
  1730.  14    Int15df (INT 15 has to be predefined)
  1731.  13    GuAltNP (general use of Alt Numpad)
  1732.  12    SupAT (ATs+ supported)
  1733.  11    GuINT16Fct3 (general use of INT 16 function 3)
  1734.  10    GuINT16Ret (general use of INT16 bad function return)
  1735.  9-8    Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
  1736.  7    ForceMF (force MF decode without read-ID)
  1737.  6    KXlate (translate keys for special keyboard)
  1738.  5    UmlautX (umlaut translation capability included)
  1739.  4    ApoX (translate apostrophe)
  1740.  3    DoINT16 (INT 16 handler included)
  1741.  2    UseCC (CopyCursor included)
  1742.  1-0    UseEB
  1743.     0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
  1744.  
  1745. Bitfields for K3 compiler switch option flags B:
  1746. Bit(s)    Description    (Table 00610)
  1747.  15-11    reserved (0)
  1748.  10    CtrlSeq (Ctrl macro capability included)
  1749.  9-8    SupINT16fct55FE
  1750.  6    DoInstallCheck (check for double installation)
  1751.  5    SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
  1752.  4    SendOut (sound and message output supported)
  1753.  3    SupInt16fct5500 (INT 16/AX=5500h supported)
  1754.  2    GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
  1755.  1-0    UseBufferStart (0=use standard area, 1=set standard area,
  1756.     2=use internal indexes, 3=reserved)
  1757.  
  1758. Bitfields for K3 internal flags A:
  1759. Bit(s)    Description    (Table 00611)
  1760.  7    DoingUmlautExp
  1761.  6    CallINT15fct4F
  1762.  5    Beep1 (requires SendOut set in option flags B)
  1763.  4    ATflag (set for AT, 386, PS/2 Models 50-80)
  1764.  3    XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
  1765.  2    KeyClick
  1766.  1    UmlautExp
  1767.  0    UmlautTrans
  1768.  
  1769. Bitfields for K3 internal flags B:
  1770. Bit(s)    Description    (Table 00612)
  1771.  7-5    reserved
  1772.  4    TranslateE0 enabled
  1773.  3    Boot enabled
  1774.  2    PrintScreen enabled
  1775.  1    Break enabled
  1776.  0    ApoPendingBeep
  1777. --------K-16AF50BX4B33-----------------------
  1778. INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
  1779.     AX = AF50h
  1780.     BX = 4B33h ('K3')
  1781.     CH = function
  1782.         00h get function flags
  1783.         CL = 00h
  1784.         Return: CX = supported function flags (see #00613)
  1785.         nonzero reserved for extensions
  1786. SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
  1787.  
  1788. Bitfields for K3PLUS supported function list:
  1789. Bit(s)    Description    (Table 00613)
  1790.  0    function 4Dh supported
  1791.  1    function 50h supported
  1792.  2-3    reserved (0)
  1793.  4    function 20h supported
  1794.  5    function 25h supported
  1795.  6    function 51h supported
  1796.  7    reserved (0)
  1797.  8    function 80h supported
  1798.  9    function 81h supported
  1799.  10    function 82h supported
  1800.  11-15    reserved (0)
  1801. --------K-16AF51BX4B33-----------------------
  1802. INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS
  1803.     AX = AF51h
  1804.     BX = 4B33h ('K3')
  1805.     CX = switches
  1806. Return: AL = status
  1807.         00h done
  1808.         CX = previous switch settings
  1809.         01h switch not supported
  1810.         FFh other error
  1811. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
  1812. --------K-16AF80BX4B33-----------------------
  1813. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR
  1814.     AX = AF80h
  1815.     BX = 4B33h ('K3')
  1816. Return: AL = status
  1817.         00h not supported
  1818.         81h if successful
  1819.         ES:CX -> original INT 09 handler
  1820. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
  1821. --------K-16AF81BX4B33-----------------------
  1822. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER
  1823.     AX = AF81h
  1824.     BX = 4B33h ('K3')
  1825. Return: AL = status
  1826.         00h not supported
  1827.         82h if successful
  1828.         ES:CX -> original INT 16 handler
  1829. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
  1830. --------K-16AF82BX4B33-----------------------
  1831. INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER
  1832.     AX = AF82h
  1833.     BX = 4B33h ('K3')
  1834. Return: AL = status
  1835.         00h not supported
  1836.         83h if successful
  1837.         ES:CX -> original INT 10 handler
  1838. Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
  1839.       Frinke, originally based on the K3 extended German keyboard driver
  1840.       by Martin Gerdes published in c't magazine in 1988
  1841. SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h
  1842. --------m-16B0B1-----------------------------
  1843. INT 16 - VGARAM v1.00 - INSTALLATION CHECK
  1844.     AX = B0B1h
  1845.     ES:DI -> 6 byte signature "VGARAM"
  1846. Return: AX = B1B0h if installed,
  1847.     DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
  1848. Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
  1849.       not used in text modes available for DOS
  1850. --------K-16CA--BX736B-----------------------
  1851. INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
  1852.     AH = CAh
  1853.     BX = 736Bh ("sk")
  1854.     CX = 736Bh
  1855.     AL = function
  1856.         00h installation check
  1857.         Return: DX = words available in keyboard buffer
  1858.         01h place keystroke in buffer
  1859.         DX = keystroke (DH = scan code, DL = ASCII character)
  1860.         Return: DX = words available in keyboard buffer
  1861.                 FFFFh on error
  1862.         02h flush STACKEY and BIOS keyboard buffers
  1863. Return: AX = CAFFh if installed
  1864.         BX = segment of resident code
  1865.         CX = STACKEY version (CH = major, CL = minor)
  1866. Program: STACKEY is a shareware keyboard-input faking TSR
  1867. Index:    installation check;STACKEY
  1868. --------V-16CA00BX6570-----------------------
  1869. INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
  1870.     AX = CA00h
  1871.     BX = 6570h ("ep")
  1872.     CX = 6570h
  1873. Return: AX = CAFFh if installed
  1874.         BX = segment of resident code
  1875.         CX = ??? (0090h)
  1876. Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette
  1877.       settings permanent across mode switches
  1878. SeeAlso: AX=CA00h/BX=7670h
  1879. --------V-16CA00BX7670-----------------------
  1880. INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
  1881.     AX = CA00h
  1882.     BX = 7670h ("vp")
  1883.     CX = 7670h
  1884. Return: AX = CAFFh if installed
  1885.         BX = segment of resident code
  1886.         CX = ??? (0090h)
  1887. Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette
  1888.       settings permanent across mode switches
  1889. SeeAlso: AX=CA00h/BX=6570h
  1890. --------U-16CB00-----------------------------
  1891. INT 16 - PUPClip v1.12+ - INSTALLATION CHECK
  1892.     AX = CB00h
  1893. Return: BX = 4342h if installed
  1894.         AX = version (AH = major version, AL = BCD minor version)
  1895. Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS
  1896.      sessions by SkullC0DEr
  1897. SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h
  1898. SeeAlso: INT 2F/AX=1701h
  1899. --------U-16CB01-----------------------------
  1900. INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION
  1901.     AX = CB01h
  1902. Return: BL = column (0-79)
  1903.     BH = row (0-49)
  1904. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h
  1905. --------U-16CB02-----------------------------
  1906. INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION
  1907.     AX = CB02h
  1908.     BL = column (0-79)
  1909.     BH = row (0-49)
  1910. Return: CF clear if successful
  1911.     CF set on error (invalid position)
  1912. SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h
  1913. --------U-16CB03-----------------------------
  1914. INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION
  1915.     AX = CB03h
  1916. Return: BL = ASCII character at current position
  1917. SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h
  1918. --------U-16CB04-----------------------------
  1919. INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION
  1920.     AX = CB04h
  1921.     BL = ASCII character to store
  1922. SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h
  1923. --------U-16CB05-----------------------------
  1924. INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS
  1925.     AX = CB05h
  1926. Return: nothing
  1927. SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h
  1928. --------U-16CB06-----------------------------
  1929. INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS
  1930.     AX = CB06h
  1931. Return: nothing
  1932. SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h
  1933. --------U-16CB07-----------------------------
  1934. INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS
  1935.     AX = CB07h
  1936. Return: nothing
  1937. SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h
  1938. --------U-16CB08-----------------------------
  1939. INT 16 - PUPClip v1.12+ - POP UP
  1940.     AX = CB08h
  1941. Return: CF clear if successful
  1942.     CF set on error (unsupported video mode)
  1943. SeeAlso: AX=CB00h
  1944. --------U-16D724CX00CB-----------------------
  1945. INT 16 U - APCAL v3.20 - GET ???
  1946.     AX = D724h
  1947.     CX = 00CBh
  1948. Return: AX = 0000h
  1949.     BX = 0000h
  1950.     DX:CX -> ??? or 0000h:0000h
  1951. Program: APCAL is an optionally-resident shareware appointment calendar by
  1952.       Gamma Software
  1953. SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
  1954. --------U-16D724CX00CC-----------------------
  1955. INT 16 U - APCAL v3.20 - GET ???
  1956.     AX = D724h
  1957.     CX = 00CCh
  1958. Return: AX = 0000h
  1959.     BX = 0000h
  1960.     DX:CX -> ??? (apparently an internal data area)
  1961. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
  1962. --------U-16D724CX00CD-----------------------
  1963. INT 16 U - APCAL v3.20 - GET ???
  1964.     AX = D724h
  1965.     CX = 00CDh
  1966. Return: AX = ??? (5345h seen)
  1967. SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
  1968. --------v-16DD--------------------------
  1969. INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK
  1970.     AH = DDh
  1971. Return: AL = DDh if resident
  1972. SeeAlso: INT 13/AX=FD50h,INT 21/AX=010Fh,INT 21/AX=0B56h
  1973. --------s-16DFDF-----------------------------
  1974. INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
  1975.     AX = DFDFh
  1976. Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
  1977.       "06/18/93" if installed
  1978. --------b-16E000-----------------------------
  1979. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER
  1980.     AX = E000h
  1981. Return: CF clear if successful
  1982.         AL = FAh
  1983.         BX = version number (BCD) (0200h = v2.00)
  1984.     CF set on error (not implemented)
  1985. Notes:    this interface is available on AMI BIOSes built from AMI core version
  1986.       8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later
  1987.     the "Meningitis" virus uses this API when attacking a system equipped
  1988.       with an AMI BIOS; it is supposedly able to write itself into the
  1989.       Flash ROM and thus make itself part of the BIOS
  1990. SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh
  1991. --------b-16E001-----------------------------
  1992. INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE
  1993.     AX = E001h
  1994. Return: CF clear if successful
  1995.         AL = FAh
  1996.         BX = number of bytes required to save chipset configuration
  1997.     CF set on error
  1998. SeeAlso: AX=E000h,AX=E002h,AX=E003h
  1999. --------b-16E002-----------------------------
  2000. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET
  2001.     AX = E002h
  2002.     ES:DI -> buffer for storing chipset status
  2003. Return: CF clear if successful
  2004.         AL = FAh
  2005.     CF set on error
  2006. SeeAlso: AX=E000h,AX=E001h,AX=E003h
  2007. --------b-16E003-----------------------------
  2008. INT 16 - AMI BIOS - BIOS-FLASH Interface -  RESTORE CHIPSET STATUS
  2009.     AX = E003h
  2010.     ES:DI -> buffer in which chipset status was previously stored
  2011. Return: CF clear if successful
  2012.         AL = FAh
  2013.     CF set on error
  2014. SeeAlso: AX=E000h,AX=E001h,AX=E002h
  2015. --------b-16E004-----------------------------
  2016. INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp
  2017.     AX = E004h
  2018. Return: CF clear if successful
  2019.         AL = FAh
  2020.     CF set on error
  2021. Note:    this function does not return until the voltage level stabilizes
  2022. SeeAlso: AX=E000h,AX=E005h,AX=E006h
  2023. --------b-16E005-----------------------------
  2024. INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp
  2025.     AX = E005h
  2026. Return: CF clear if successful
  2027.         AL = FAh
  2028.     CF set on error
  2029. Note:    this function does not return until the voltage level stabilizes
  2030. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  2031. --------b-16E006-----------------------------
  2032. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT
  2033.     AX = E006h
  2034. Return: CF clear if successful
  2035.         AL = FAh
  2036.     CF set on error
  2037. Note:    this function performs any delay required to allow the Flash ROM to
  2038.       stabilize in the write-protected state
  2039. SeeAlso: AX=E000h,AX=E004h,AX=E007h
  2040. --------b-16E007-----------------------------
  2041. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE
  2042.     AX = E007h
  2043. Return: CF clear if successful
  2044.         AL = FAh
  2045.     CF set on error
  2046. Note:    this function performs any delay required to allow the Flash ROM to
  2047.       stabilize in the write-enabled state
  2048. SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h
  2049. --------b-16E008-----------------------------
  2050. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT
  2051.     AX = E008h
  2052. Return: CF clear if successful
  2053.         AL = FAh
  2054.     CF set on error
  2055. Desc:    select the Flash ROM if the system contains both EPROM and Flash ROM
  2056. Note:    this function performs any delay required to allow the Flash ROM to
  2057.       stabilize in the selected state; if no EPROM is present, this
  2058.       function always returns successfully
  2059. SeeAlso: AX=E000h,AX=E007h,AX=E009h
  2060. --------b-16E009-----------------------------
  2061. INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT
  2062.     AX = E009h
  2063. Return: CF clear if successful
  2064.         AL = FAh
  2065.     CF set on error
  2066. Desc:    select the EPROM if the system contains both EPROM and Flash ROM
  2067. Note:    this function performs any delay required to allow the Flash ROM to
  2068.       stabilize in the de-selected state; if no EPROM is present, this
  2069.       function always returns successfully
  2070. SeeAlso: AX=E000h,AX=E006h,AX=E008h
  2071. --------b-16E00A-----------------------------
  2072. INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY
  2073.     AX = E00Ah
  2074.     BX = number of paragraphs
  2075.     ES = starting segment of memory
  2076. Return: CF clear if successful
  2077.         AL = FAh
  2078.     CF set on error
  2079. Desc:    determine whether the specified memory may be used for flash
  2080.       programming
  2081. Note:    always returns error if BX is zero on entry
  2082. SeeAlso: AX=E000h,AX=E00Bh
  2083. --------b-16E00B-----------------------------
  2084. INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS
  2085.     AX = E00Bh
  2086.     ES:DI -> buffer for internal cache status (minimum 4Kbytes)
  2087. Return: CF clear if successful
  2088.         AL = FAh
  2089.     CF set on error
  2090. Note:    always returns error if the hardware does not contain internal
  2091.       cache or this call is made in protected mode
  2092. SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch
  2093. --------b-16E00C-----------------------------
  2094. INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS
  2095.     AX = E00Ch
  2096.     ES:DI -> buffer containing internal cache status (minimum 4Kbytes)
  2097. Return: CF clear if successful
  2098.         AL = FAh
  2099.     CF set on error
  2100. Note:    always returns error if the hardware does not contain internal
  2101.       cache or this call is made in protected mode
  2102. SeeAlso: AX=E000h,AX=E00Bh
  2103. --------t-16E0E0-----------------------------
  2104. INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
  2105.     AX = E0E0h
  2106. Return: AX = 1F1Fh if installed
  2107.         DWORD 0040h:00F0h -> last data block in TSR list (see #00615)
  2108. Note:    the returned TSR list provides support for communication among TSRs
  2109.       built with TurboPower's Turbo Professional and Object Professional
  2110.       libraries for Turbo Pascal
  2111. SeeAlso: AX=F0F0h
  2112. --------b-16E0FF-----------------------------
  2113. INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET
  2114.     AX = E0FFh
  2115. Return: never
  2116. SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL"
  2117. --------U-16ED--BHED-------------------------
  2118. INT 16 - BORLAND TURBO LIGHTNING - API
  2119.     AH = EDh
  2120.     BH = EDh
  2121.     BL = function
  2122.         00h installation check
  2123.         Return: AX = 5205h
  2124.             CH = major version
  2125.             CL = minor version
  2126.         01h identical to function 00h???
  2127.         02h get resident data segment
  2128.         Return: AX = data segment of resident portion
  2129.         03h get resident ???
  2130.         Return: AX = offset of some buffer in resident code seg
  2131.         04h redefine auxiliary dictionary
  2132.         DS:SI -> counted filename string
  2133.         Return: AL = result code
  2134.         05h select active environment
  2135.         AL = environment (00h to 0Ch)
  2136.         Return: AX = status
  2137.                 0000h if OK
  2138.                 0001h if out of range
  2139.         06h toggle AutoProof???
  2140.         AL = state (00h off, 01h on)
  2141.         07h ???
  2142.         08h ???
  2143.         AL = char???
  2144.         CX = ???
  2145.         DX = ???
  2146.         Return: AX = 0, 1 or 2
  2147.         09h ???
  2148.         0Ah ???
  2149.         CX = ???
  2150.         DX = ???
  2151.         Return: AX = ???
  2152.         0Bh check dictionary integrity???
  2153.         DS:SI -> counted dictionary filename string
  2154.         Return: AX = 0, 40h, 80h
  2155.         0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
  2156.         DS:SI -> counted string to check
  2157.         Return: AH = 0
  2158.             AL = result code
  2159.                00h string found in dictionary
  2160.                20h string begins more than one word
  2161.                40h string not found
  2162.         0Dh set ???
  2163.         (sets an internal flag)
  2164.         0Eh spellcheck string (RAM dictionary only)
  2165.         DS:SI -> counted string to check
  2166.         Return: AH = 00h
  2167.             AL = result code
  2168.                 00h string found in dictionary
  2169.                 01h string not found
  2170.                 02h ???
  2171.         0Fh ???
  2172.         10h ???
  2173. Notes:    AX in general returns an error code from most functions.
  2174. Index:    installation check;Turbo Lightning
  2175. --------U-16EF-------------------------------
  2176. INT 16 - CALCULATOR - INSTALLATION CHECK
  2177.     AH = EFh
  2178. Return: AX = 0088h if installed
  2179. Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
  2180.       Marek Kosznik
  2181. --------b-16F0-------------------------------
  2182. INT 16 - Compaq 386 and newer - SET CPU SPEED
  2183.     AH = F0h
  2184.     AL = speed code (see #00614)
  2185.     if AL=09h,
  2186.         CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
  2187. Note:    also supported by some versions of AMI BIOS dated June 1992 or later;
  2188.       speed codes 0 or 1 are used for Low Speed, 2 for High Speed
  2189. SeeAlso: AH=F1h,AH=F3h
  2190.  
  2191. (Table 00614)
  2192. Values for speed code:
  2193.  00h    equivalent to 6 MHz 80286 (COMMON)
  2194.  01h    equivalent to 8 MHz 80286 (FAST)
  2195.  02h    full 16 MHz (HIGH)
  2196.  03h    toggles between 8 MHz-equivalent and speed set by system board switch
  2197.       (AUTO or HIGH)
  2198.  08h    full 16 MHz except 8 MHz-equivalent during floppy disk access
  2199.  09h    specify speed directly
  2200. --------t-16F0F0-----------------------------
  2201. INT 16 - TurboPower TSRs - INSTALLATION CHECK
  2202.     AX = F0F0h
  2203. Return: AX = 0F0Fh if installed
  2204.         ES:DI -> last data block in TSR list (see #00615)
  2205. Note:    the returned TSR list provides support for communication among TSRs
  2206.       built with TurboPower's Turbo Professional and Object Professional
  2207.       libraries for Turbo Pascal
  2208. SeeAlso: AX=E0E0h
  2209.  
  2210. Format of TurboPower TSR data block:
  2211. Offset    Size    Description    (Table 00615)
  2212.  00h    DWORD    pointer to program tag (counted ASCII string)
  2213.  04h    WORD    interface version number (0400h)
  2214.  06h    DWORD    pointer to command entry point
  2215.  0Ah    DWORD    pointer to previous data block (0000h:0000h if none)
  2216.  0Eh    DWORD    pointer to next data block (0000h:0000h if none)
  2217. ---swappable TSRs only---
  2218.  12h    DWORD    pointer to swapping data
  2219.  16h    DWORD    pointer to user data
  2220.     more???
  2221. --------b-16F1-------------------------------
  2222. INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
  2223.     AH = F1h
  2224. Return: AL = speed code (see #00614)
  2225.     if AL = 09h, CX = speed code
  2226. Note:    also supported by some versions of AMI BIOS dated June 1992 or later
  2227. SeeAlso: AH=F0h,AH=F3h
  2228. --------b-16F2-------------------------------
  2229. INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
  2230.     AH = F2h
  2231. Return: AL = type
  2232.         00h if 11-bit AT keyboard is in use
  2233.         01h if 9-bit PC keyboard is in use
  2234.     AH = 00h (04/08/93 system ROM)
  2235. SeeAlso: MEM 0040h:00C2h
  2236. --------b-16F3-------------------------------
  2237. INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
  2238.     AH = F3h
  2239.     AL = new limit
  2240.         00h limit is 6 Mhz
  2241.         01h limit is 8 Mhz/6 Mhz
  2242. SeeAlso: AH=F0h,AH=F1h
  2243. --------U-16F398-----------------------------
  2244. INT 16 U - NORTON GUIDES - INSTALLATION CHECK
  2245.     AX = F398h
  2246. Return: AX = 6A73h ("js")
  2247.     BH = BIOS scan code of current hot key
  2248.     BL = ASCII code of current hot key
  2249. Note:    NG.EXE was written by John Socha
  2250. --------b-16F400-----------------------------
  2251. INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
  2252.     AX = F400h
  2253. Return: AH = E2h (*)
  2254.     AL = status
  2255.         00h not present
  2256.         01h enabled
  2257.         02h disabled
  2258.     CX = cache memory size
  2259.         bit 15:    cache size information is NOT valid
  2260.         bits 14-0:    cache memory size in kilobytes
  2261.     DH = cache write technology
  2262.         bit 7:    cache write information is NOT valid
  2263.         bits 6-1:    reserved (0)
  2264.         bit 0:    0 = Write-through caching
  2265.             1 = Write-back caching
  2266.     DL = cache type
  2267.         bit 7:    cache type information is NOT valid
  2268.         bits 6-1:    reserved (0)
  2269.         bit 0:    0 = Direct mapped
  2270.             1 = Two-way set-associative
  2271. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  2272.     many (most) BIOSes return a modified AH when called for an unsupported
  2273.       or non-keyboard function (typically, the highest supported keyboard
  2274.       function [normally 12h] is subtracted from the original AH)
  2275. SeeAlso: AX=F401h,AX=F402h
  2276. --------b-16F401-----------------------------
  2277. INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
  2278.     AX = F401h
  2279. Return: AX = E201h
  2280. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  2281.     many (most) BIOSes return a modified AH when called for an unsupported
  2282.       or non-keyboard function (typically, the highest supported keyboard
  2283.       function [normally 12h] is subtracted from the original AH)
  2284. SeeAlso: AX=F400h,AX=F402h
  2285. --------b-16F402-----------------------------
  2286. INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
  2287.     AX = F402h
  2288. Return: AX = E202h
  2289. Notes:    also supported by some versions of AMI BIOS dated June 1992 or later
  2290.     many (most) BIOSes return a modified AH when called for an unsupported
  2291.       or non-keyboard function (typically, the highest supported keyboard
  2292.       function [normally 12h] is subtracted from the original AH)
  2293. SeeAlso: AX=F400h,AX=F401h
  2294. --------v-16FA00DX5945-----------------------
  2295. INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
  2296.     AX = FA00h
  2297.     DX = 5945h
  2298. Return: CF clear
  2299.     DI = 4559h
  2300.     BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
  2301.         FFFFh if disabled
  2302. Note:    MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
  2303. SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
  2304. --------v-16FA01DX5945-----------------------
  2305. INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
  2306.     AX = FA01h
  2307.     DX = 5945h
  2308. Return: CF clear if successful
  2309.     DI = 4559h
  2310. SeeAlso: AX=FA00h
  2311. --------v-16FA02DX5945-----------------------
  2312. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
  2313.     AX = FA02h
  2314.     DX = 5945h
  2315.     BL = new parameter flags (see #00616)
  2316. Return: CF clear
  2317.     DI = 4559h
  2318.     CL = old value of parameter flags
  2319.  
  2320. Bitfields for VSAFE/VWATCH parameter flags:
  2321. Bit(s)    Description    (Table 00616)
  2322.  7    Protect executable files
  2323.  6    Protect FD boot sector
  2324.  5    Protect HD boot sector
  2325.  4    Boot sector viruses
  2326.  3    Check executable files
  2327.  2    General write protect
  2328.  1    Resident
  2329.  0    HD Low level format
  2330. --------v-16FA03DX5945-----------------------
  2331. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
  2332.     AX = FA03h
  2333.     DX = 5945h
  2334. Return: CF clear
  2335.     DI = 4559h
  2336.     AX = 0002h
  2337. --------v-16FA04DX5945-----------------------
  2338. INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
  2339.     AX = FA04h
  2340.     DX = 5945h
  2341. Return: CF clear
  2342.     DI = 4559h
  2343.     BL = hotkey disable flag (nonzero if hotkey disabled)
  2344. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  2345. SeeAlso: AX=FA00h,AX=FA05h
  2346. --------v-16FA05DX5945-----------------------
  2347. INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
  2348.     AX = FA05h
  2349.     DX = 5945h
  2350.     BL = new value of hotkey disable flag (nonzero to disable hotkey)
  2351. Return: CF clear
  2352.     DI = 4559h
  2353. Note:    this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
  2354. SeeAlso: AX=FA00h,AX=FA04h
  2355. --------v-16FA06DX5945-----------------------
  2356. INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
  2357.     AX = FA06h
  2358.     DX = 5945h
  2359. Return: CF clear
  2360.     DI = 4559h
  2361.     BL = test status
  2362.         00h don't monitor network drives (default for VWATCH v2.1)
  2363.         FFh monitor network drives (default for VSAFE v2.0)
  2364.     CL = ??? (only VSAFE 2.0)
  2365. SeeAlso: AX=FA07h
  2366. --------v-16FA07DX5945-----------------------
  2367. INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
  2368.     AX = FA07h
  2369.     DX = 5945h
  2370.     BL = new state
  2371.         00h don't monitor
  2372.         01h monitor network drives
  2373. Return: CF clear
  2374.     DI = 4559h
  2375. Note:    VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
  2376. SeeAlso: AX=FA00h,AX=FA06h
  2377. --------v-16FA08DX5945-----------------------
  2378. INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
  2379.     AX = FA08h
  2380.     DX = 5945h
  2381. Return: CF clear
  2382.     DI = 4559h
  2383.     AX = ??? (0002h)
  2384.     BX = version (BH=major, BL=two-digit minor)
  2385. Note:    this function is not supported by the PC Tools 9.0 VSAFE v2.0
  2386. SeeAlso: AX=FA00h,AX=FA06h
  2387. --------U-16FE55-----------------------------
  2388. INT 16 U - PC Tools v8+ programs - GET ???
  2389.     AX = FE55h
  2390.     CX = segment of resident program or 0000h for last loaded
  2391.     DX = 0000h
  2392. Return: DX = resident code segment (unchanged if CX=0000h on entry)
  2393.     AX = ??? or 0000h
  2394. Note:    this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
  2395.       and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
  2396.       seem to hook it merely to return the same AX as the CPTASK loaded
  2397.       prior to them returned
  2398. --------U-16FEA4-----------------------------
  2399. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
  2400.     AX = FEA4h
  2401. Return: nothing
  2402. Note:    this function is identical to AX=FFA4h, and is implemented by the same
  2403.       code in DESKTOP
  2404. SeeAlso: AX=FFA4h
  2405. --------U-16FEC6-----------------------------
  2406. INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
  2407.     AX = FEC6h
  2408.     BL = new state (00h enabled, nonzero disabled)
  2409. Return: nothing
  2410. Desc:    specify whether CPSCHED API calls other than this one and AX=FE55h will
  2411.       be honored
  2412. --------U-16FED3-----------------------------
  2413. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
  2414.     AX = FED3h
  2415.     DS:SI -> 92-byte data record for ???
  2416. Return: ???
  2417. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  2418.       code in DESKTOP
  2419. SeeAlso: AX=FFD3h
  2420. --------U-16FEDC-----------------------------
  2421. INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
  2422.     AX = FEDCh
  2423. Return: AX,DX destroyed
  2424. Index:    uninstall;CPSCHED
  2425. --------U-16FEEFCX0000-----------------------
  2426. INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
  2427.     AX = FEEFh
  2428.     CX = 0000h
  2429. Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
  2430.         BX = segment of resident portion
  2431.         DX = (CPSCHED v8.0) resident CS
  2432. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  2433.       code in DESKTOP
  2434. SeeAlso: AX=FFEFh
  2435. --------U-16FEF1-----------------------------
  2436. INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
  2437.     AX = FEF1h
  2438.     BX = ???
  2439. Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
  2440.     DX = 5555h
  2441. Note:    this function is identical to AX=FFD3h, and is implemented by the same
  2442.       code in DESKTOP
  2443. SeeAlso: AX=FFF1h
  2444. --------K-16FF-------------------------------
  2445. INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
  2446.     AH = FFh
  2447.     DX = scan code
  2448. Return: AL = status
  2449.         00h success
  2450.         01h failure
  2451. Program: KBUF is a keyboard buffer expander by Mark Adler
  2452. SeeAlso: AH=05h
  2453. --------V-16FF-------------------------------
  2454. INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
  2455.     AH = FFh
  2456. Return: AL = interrupt number to which BIOS keyboard handler has been relocated
  2457.     AL+1 = Zoom interrupt number
  2458.     BX = hotkey
  2459. Notes:    the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
  2460.       the default hot key is F10
  2461.     not all vendors include the Tseng TSR which supports these functions
  2462. SeeAlso: INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
  2463. Index:    hotkeys;OPTIMA 1024 VGA
  2464. ----------16FF--BH00-------------------------
  2465. INT 16 - FREEZE.COM - INSTALLATION CHECK
  2466.     AH = FFh
  2467.     BH = 00h
  2468. Return: BH = FFh if installed
  2469. Program: FREEZE is a PC Magazine utility
  2470. --------d-16FF70BX0000-----------------------
  2471. INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
  2472.     AX = FF70h
  2473.     BX = 0000h
  2474.     CX = 4C69h ('Li')
  2475.     DX = 6E6Bh ('nk')
  2476. Return: AX = 0000h
  2477.     CX = 4350h ('CP')
  2478.     DH = major version
  2479.     DL = minor version
  2480. Program: DRIVEMAP is a redirector which allows drives on computers connected
  2481.       over the parallel or serial ports to appear as local drives
  2482. SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
  2483. --------d-16FF70BX0001-----------------------
  2484. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  2485.     AX = FF70h
  2486.     BX = 0001h
  2487.     DL = ???
  2488. Return: AX = ???
  2489.     DH = ???
  2490. SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
  2491. --------d-16FF70BX0002-----------------------
  2492. INT 16 U - PC Tools v8+ DRIVEMAP - ???
  2493.     AX = FF70h
  2494.     BX = 0002h
  2495.     CX = ???
  2496.     DX = ???
  2497. Return: AX = ??? or FFFEh/FFFFh on error
  2498.     DL = ???
  2499. BUG:    DRIVEMAP will branch to random locations for BX values other than
  2500.       those listed above for v8.0-9.0 because a) the incorrect register is
  2501.       range-tested, resulting in BX=0003h-5CD6h being accepted as valid
  2502.       function numbers, and b) the conditional which branches on invalid
  2503.       function numbers jumps to the following instruction, becoming a NOP
  2504. SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
  2505. Index:    installation check;DRIVEMAP
  2506. --------T-16FF80BX0000-----------------------
  2507. INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
  2508.     AX = FF80h
  2509.     BX = 0000h
  2510.     CX = 0000h
  2511.     DX = 0000h
  2512. Return: CX = 5555h if installed
  2513. Program: CPTASK is a task switcher by Central Point Software
  2514. --------T-16FF80BX0001-----------------------
  2515. INT 16 U - PC Tools v8+ CPTASK - GET ???
  2516.     AX = FF80h
  2517.     BX = 0001h
  2518.     ???
  2519. Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
  2520.     BX = ??? (PSP segment of resident code???)
  2521. --------T-16FF80BX0002-----------------------
  2522. INT 16 U - PC Tools v8+ CPTASK - GET ???
  2523.     AX = FF80h
  2524.     BX = 0002h
  2525. Return: DX:SI -> ???
  2526. --------T-16FF80BX0003-----------------------
  2527. INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
  2528.     AX = FF80h
  2529.     BX = 0003h
  2530. Return: AX = flags (see #00617)
  2531. SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
  2532.  
  2533. Bitfields for CPTASK flags:
  2534. Bit(s)    Description    (Table 00617)
  2535.  10    ???
  2536.  13    ???
  2537.  14    ???
  2538.  15    ???
  2539. --------T-16FF80BX0004-----------------------
  2540. INT 16 U - PC Tools v8+ CPTASK - SET ???
  2541.     AX = FF80h
  2542.     BX = 0004h
  2543.     CX = new value of ???
  2544. Return: ???
  2545. Note:    this function also sets bit 14 of the flags word returned by
  2546.       AX=FF80h/BX=0003h
  2547. --------T-16FF80BX0005-----------------------
  2548. INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
  2549.     AX = FF80h
  2550.     BX = 0005h
  2551. Return: AX = number of active tasks???
  2552. --------T-16FF80BX0006-----------------------
  2553. INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
  2554.     AX = FF80h
  2555.     BX = 0006h
  2556. Return: AX = old state (0000h clear, 0001h set)
  2557. Note:    the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
  2558. --------T-16FF80BX0007-----------------------
  2559. INT 16 U - PC Tools v8+ CPTASK - ???
  2560.     AX = FF80h
  2561.     BX = 0007h
  2562.     ES:DI -> ???
  2563.     ???
  2564. Return: ???
  2565. --------T-16FF80BX0008-----------------------
  2566. INT 16 U - PC Tools v8+ CPTASK - ???
  2567.     AX = FF80h
  2568.     BX = 0008h
  2569.     ???
  2570. Return: ???
  2571. --------T-16FF80BX0009-----------------------
  2572. INT 16 U - PC Tools v8+ CPTASK - GET ???
  2573.     AX = FF80h
  2574.     BX = 0009h
  2575. Return: CL = ???
  2576.     CH = ??? (01h or 02h)
  2577. --------T-16FF80BX000A-----------------------
  2578. INT 16 U - PC Tools v9+ CPTASK - SET ???
  2579.     AX = FF80h
  2580.     BX = 000Ah
  2581.     DS:SI -> 128-byte buffer containing ???
  2582. --------T-16FF80BX000B-----------------------
  2583. INT 16 U - PC Tools v9+ CPTASK - SET ???
  2584.     AX = FF80h
  2585.     BX = 000Bh
  2586.     DX = index of ??? task (1-10)
  2587. --------T-16FF80BX000C-----------------------
  2588. INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
  2589.     AX = FF80h
  2590.     BX = 000Ch
  2591.     CX = new delay time in minutes
  2592. --------T-16FF80BX4350-----------------------
  2593. INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
  2594.     AX = FF80h
  2595.     BX = 4350h ('CP')
  2596.     CX = 5354h ('ST')
  2597. Return: never returns; terminates all tasks and exits to program originally
  2598.       calling CPTASK
  2599. --------U-16FF90-----------------------------
  2600. INT 16 U - PC Tools v8+ DESKTOP - ???
  2601.     AX = FF90h
  2602.     ???
  2603. Return: ???
  2604. Note:    available only when popped up
  2605. --------U-16FF91-----------------------------
  2606. INT 16 U - PC Tools v7+ DESKTOP - ???
  2607.     AX = FF91h
  2608.     ???
  2609. Return: AX = 0000h
  2610. Note:    calls AX=FFFDh after ???
  2611. SeeAlso: AX=FF92h,AX=FFFDh
  2612. --------U-16FF92-----------------------------
  2613. INT 16 U - PC Tools v7+ DESKTOP - ???
  2614.     AX = FF92h
  2615.     ???
  2616. Return: AX = 0000h
  2617. Note:    like AX=FF91h, but temporarily sets ??? to 3
  2618. SeeAlso: AX=FF91h,AX=FFFDh
  2619. --------U-16FF93-----------------------------
  2620. INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
  2621.     AX = FF93h
  2622. --------U-16FF94-----------------------------
  2623. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  2624.     AX = FF94h
  2625.     CX = ??? (default 0017h)
  2626. --------U-16FF95-----------------------------
  2627. INT 16 U - PC Tools v7+ DESKTOP - SET ???
  2628.     AX = FF95h
  2629.     BX = ???
  2630. --------U-16FF96-----------------------------
  2631. INT 16 U - PC Tools v7+ DESKTOP - ???
  2632.     AX = FF96h
  2633.     CL = ???
  2634. Return: AX = ???
  2635. --------U-16FF97-----------------------------
  2636. INT 16 U - PC Tools v7+ DESKTOP - ???
  2637.     AX = FF97h
  2638.     DS:DX -> buffer for ??? (see #00618)
  2639. Return: ???
  2640.  
  2641. Format of PC Tools DESKTOP buffer:
  2642. Offset    Size    Description    (Table 00618)
  2643.  00h 48 BYTEs    ???
  2644.  30h 128 BYTEs    ???
  2645. --------U-16FF98-----------------------------
  2646. INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
  2647.     AX = FF98h
  2648.     DX = byte offset in file of overlay header (see #00619)
  2649. Return: BX = file handle for DESK.OVL file
  2650. Desc:    open the DESK.OVL file, seek to the specified offset, read in the
  2651.       overlay header, and seek to the offset specified by the header
  2652.  
  2653. Format of PC Tools DESKTOP overlay header:
  2654. Offset    Size    Description    (Table 00619)
  2655.  00h 12 BYTEs    NUL-padded ASCII overlay filename
  2656.  0Ch    DWORD    offset within DESK.OVL file of actual overlay
  2657. --------U-16FF99-----------------------------
  2658. INT 16 U - PC Tools v7+ DESKTOP - ???
  2659.     AX = FF99h
  2660.     ???
  2661. Return: ???
  2662. --------U-16FF9A-----------------------------
  2663. INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
  2664.     AX = FF9Ah
  2665. Return: ES:BX -> name of current color scheme
  2666. Note:    available even if not popped up
  2667. --------U-16FF9B-----------------------------
  2668. INT 16 U - PC Tools v7+ DESKTOP - UNUSED
  2669.     AX = FF9Bh
  2670. Return: ???
  2671. Note:    sounds triple-length beep
  2672. --------T-16FF9C-----------------------------
  2673. INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
  2674.     AX = FF9Ch
  2675.     BL = function
  2676.         00h set ??? pointer
  2677.         DS:SI -> ???
  2678.         01h clear pointer to 0000h:0000h
  2679. ----------16FF9D-----------------------------
  2680. INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
  2681.     AX = FF9Dh
  2682.     ES:BX -> ??? word
  2683. Return: ???
  2684. Note:    if ES is non-zero, the word pointed at by ES:BX determines whether the
  2685.       ??? flag is cleared (word = 0000h) or set (word is nonzero).    The
  2686.       flag is always cleared if ES=0000h.
  2687. --------U-16FF9E-----------------------------
  2688. INT 16 U - PC Tools v7+ DESKTOP - ???
  2689.     AX = FF9Eh
  2690.     DL = ???
  2691.         bit 7: ???
  2692.         bits 6-0: function number??? (00h,01h,other)
  2693.     ???
  2694. Return: ???
  2695. --------U-16FFA1-----------------------------
  2696. INT 16 U - PC Tools v7+ DESKTOP - ???
  2697.     AX = FFA1h
  2698.     ???
  2699. Return: ???
  2700. Note:    same as AX=FFA2h, except ??? set to FFh
  2701. SeeAlso: AX=FFA2h
  2702. --------U-16FFA2-----------------------------
  2703. INT 16 U - PC Tools v7+ DESKTOP - ???
  2704.     AX = FFA2h
  2705.     ???
  2706. Return: ???
  2707. Note:    calls AX=FFC7h (remove window) and AX=FFFDh
  2708. SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
  2709. --------y-16FFA3BX0000-----------------------
  2710. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
  2711.     AX = FFA3h
  2712.     BX = 0000h
  2713.     CX = 0000h
  2714. Return: AX = segment of resident code
  2715.     BX = 5555h
  2716.     CX = 5555h
  2717. Note:    also supported by DOS 6 UNDELETE which is licensed from PC Tools
  2718. SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
  2719. --------y-16FFA3BX0001-----------------------
  2720. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  2721.     AX = FFA3h
  2722.     BX = 0001h
  2723.     CX = 0001h
  2724. Return: AX:BX -> ???
  2725.     CX = BX
  2726. --------y-16FFA3BX0002-----------------------
  2727. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  2728.     AX = FFA3h
  2729.     BX = 0002h
  2730.     CX = 0002h
  2731. Return: AX = ??? (0 or 1)
  2732.     CX = BX = AX
  2733. --------y-16FFA3BX0003-----------------------
  2734. INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
  2735.     AX = FFA3h
  2736.     BX = 0003h
  2737.     CX = 0003h
  2738. Return: AX = ??? (0 or 1)
  2739.     CX = BX = AX
  2740. --------y-16FFA3BX0004-----------------------
  2741. INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
  2742.     AX = FFA3h
  2743.     BX = 0004h
  2744.     CX = 0004h
  2745. SeeAlso: AX=FFA3h/BX=0005h
  2746. --------y-16FFA3BX0005-----------------------
  2747. INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
  2748.     AX = FFA3h
  2749.     BX = 0005h
  2750.     CX = 0005h
  2751. SeeAlso: AX=FFA3h/BX=0004h
  2752. --------y-16FFA3BX0006-----------------------
  2753. INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
  2754.     AX = FFA3h
  2755.     BX = 0006h
  2756.     CX = 0006h
  2757.     DX = current PSP segment as known to DOS??? or 0000h
  2758. --------d-16FFA3BXFFA3-----------------------
  2759. INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
  2760.     AX = FFA3h
  2761.     BX = FFA3h
  2762.     CX = FFA3h
  2763. Return: BX = CX = 5555h if installed
  2764.         AX = resident code segment
  2765. Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
  2766.       access indicator on the screen; in v7 and v8, this function was
  2767.       provided by DATAMON
  2768. Note:    DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
  2769. --------U-16FFA4-----------------------------
  2770. INT 16 U - PC Tools v7-8 DESKTOP - ???
  2771.     AX = FFA4h
  2772. Return: ???
  2773. Notes:    available even when not popped up
  2774.     sets unknown flag if ??? conditions met
  2775. SeeAlso: AX=FEA4h
  2776. --------c-16FFA5CX1111-----------------------
  2777. INT 16 - PC-Cache v6+ - INSTALLATION CHECK
  2778.     AX = FFA5h
  2779.     CX = 1111h
  2780. Return: CH = 00h if installed
  2781.         ES:DI -> internal data (see #00620)
  2782.         CL = cache state
  2783.         01h enabled
  2784.         02h disabled
  2785. SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
  2786.  
  2787. Format of PC-Cache internal data:
  2788. Offset    Size    Description    (Table 00620)
  2789. -1Ch 20 BYTEs    cached drive list, one byte per drive A: to T:
  2790.         each byte is either blank (20h) or drive letter (41h-54h)
  2791.  -8    BYTE    ???
  2792.  -7    WORD    number of physical transfers (scaled down to 0000h-7FFFh)
  2793.  -5    WORD    number of saved transfers (scaled down to 0000h-7FFFh)
  2794.  -3   3 BYTEs    ???
  2795. --------c-16FFA5CXAAAA-----------------------
  2796. INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
  2797.     AX = FFA5h
  2798.     CX = AAAAh
  2799. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  2800. SeeAlso: AX=FFA5h/CX=CCCCh
  2801. --------c-16FFA5CXCCCC-----------------------
  2802. INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
  2803.     AX = FFA5h
  2804.     CX = CCCCh
  2805. Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
  2806. Note:    delayed writes are automatically disabled on EXECing
  2807.       (see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
  2808.       however, delayed writes are not automatically reenabled upon the
  2809.       program's termination in v6.
  2810. SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
  2811. --------c-16FFA5CXDDDD-----------------------
  2812. INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
  2813.     AX = FFA5h
  2814.     CX = DDDDh
  2815. SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
  2816. --------c-16FFA5CXEEEE-----------------------
  2817. INT 16 - PC-Cache v6+ - ENABLE CACHE
  2818.     AX = FFA5h
  2819.     CX = EEEEh
  2820. SeeAlso: AX=FFA5h/CX=DDDDh
  2821. --------c-16FFA5CXFFFF-----------------------
  2822. INT 16 - PC-Cache v6+ - FLUSH CACHE
  2823.     AX = FFA5h
  2824.     CX = FFFFh
  2825. SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
  2826. --------U-16FFA6-----------------------------
  2827. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  2828.     AX = FFA6h
  2829. Return: DS:SI -> ???
  2830. Note:    available only when popped up
  2831. --------U-16FFA7-----------------------------
  2832. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
  2833.     AX = FFA7h
  2834. Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
  2835. --------U-16FFA8-----------------------------
  2836. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  2837.     AX = FFA8h
  2838.     DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
  2839.     ???
  2840. Return: ???
  2841. Notes:    available only when popped up
  2842.     strings copied into internal buffer, among other actions
  2843. --------U-16FFA9-----------------------------
  2844. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
  2845.     AX = FFA9h
  2846. Return: DS:SI -> version string
  2847. --------U-16FFAA-----------------------------
  2848. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  2849.     AX = FFAAh
  2850.     ???
  2851. Return: ???
  2852. Note:    available only when popped up
  2853. --------U-16FFAB-----------------------------
  2854. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
  2855.     AX = FFABh
  2856. Return: DS:SI -> editor setting strings???
  2857. --------U-16FFAC-----------------------------
  2858. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  2859.     AX = FFACh
  2860.     DL = ???
  2861. Note:    available only when popped up
  2862. --------U-16FFAD-----------------------------
  2863. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  2864.     AX = FFADh
  2865.     DL = ???
  2866. --------U-16FFAE-----------------------------
  2867. INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
  2868.     AX = FFAEh
  2869. Return: AL = ???
  2870. --------U-16FFAF-----------------------------
  2871. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  2872.     AX = FFAFh
  2873.     DL = ???
  2874. --------U-16FFB0-----------------------------
  2875. INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
  2876.     AX = FFB0h
  2877.     BL = ???
  2878. --------U-16FFB1-----------------------------
  2879. INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
  2880.     AX = FFB1h
  2881.     ???
  2882. Return: ???
  2883. --------U-16FFB2-----------------------------
  2884. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  2885.     AX = FFB2h
  2886. Return: DS:SI -> ???
  2887. --------U-16FFB3-----------------------------
  2888. INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
  2889.     AX = FFB3h
  2890.     ???
  2891. Return: ???
  2892. Note:    available only when popped up
  2893. --------U-16FFB4-----------------------------
  2894. INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
  2895.     AX = FFB4h
  2896. Note:    available only when popped up
  2897. SeeAlso: AX=FFBBh
  2898. --------U-16FFB5-----------------------------
  2899. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
  2900.     AX = FFB5h
  2901.     BX = window specifier (000Fh to 0019h) (see #00621)
  2902.     DX = 0000h get, nonzero = set
  2903.     ES:DI -> window parameter buffer (see #00622)
  2904. SeeAlso: AX=FFCBh
  2905.  
  2906. (Table 00621)
  2907. Values for PC Tools DESKTOP window specifier:
  2908.  000Fh    comm/FAX
  2909.  0014h    hotkey selection
  2910.  0015h    ASCII table
  2911.  0016h    system colors menu
  2912.  
  2913. Format of PC Tools DESKTOP window parameters:
  2914. Offset    Size    Description    (Table 00622)
  2915.  00h    BYTE    rows in window, not counting frame
  2916.  01h    BYTE    columns in window, not counting frame
  2917.  02h    BYTE    row number of top of window
  2918.  03h    BYTE    2*column number of left of window
  2919.  04h    BYTE    character attribute for ???
  2920.  05h    BYTE    character attribute for background/border
  2921.  06h    BYTE    character attribute for ???
  2922.  07h    DWORD    pointer to ??? on screen
  2923.  0Bh  4 BYTEs    ???
  2924.  0Fh    BYTE    nonzero if window may be resized
  2925. Note:    if running in monochrome mode, character attributes at offsets 04h to
  2926.       06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
  2927.       are changed to 07h on reading
  2928. --------U-16FFB6-----------------------------
  2929. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
  2930.     AX = FFB6h
  2931. Return: AH = ???
  2932.     AL = ???
  2933. --------U-16FFB7-----------------------------
  2934. INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
  2935.     AX = FFB7h
  2936.     BX = direction
  2937.         0000h copy to buffer
  2938.         else  copy from buffer
  2939.     DS:SI -> 70-byte buffer with ???
  2940. Return: data copied
  2941. Note:    available only when popped up under v6.0+
  2942. --------U-16FFB8-----------------------------
  2943. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
  2944.     AX = FFB8h
  2945.     BH = subfunction
  2946.         00h get
  2947.         Return: BL = old value of ???
  2948.             CL = old value of ??? (v6.0+)
  2949.             CH = old value of ??? (v6.0+)
  2950.         nonzero set
  2951.         BL = new value for ???
  2952.         CL = new value for ??? (v6.0+)
  2953.         CH = new value for ??? (v6.0+)
  2954.         DH = ???
  2955.         Return: AL = old value replaced by CL (v6.0+)
  2956.             AH = old value replaced by CH (v6.0+)
  2957. --------U-16FFB9-----------------------------
  2958. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  2959.     AX = FFB9h
  2960.     ???
  2961. Return: AX = ???
  2962.     CX = ???
  2963.     DS:SI -> ???
  2964.     ES:DI -> ???
  2965. --------U-16FFBA-----------------------------
  2966. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  2967.     AX = FFBAh
  2968.     ???
  2969. Return: AX = ???
  2970. Note:    available only when popped up
  2971. --------U-16FFBB-----------------------------
  2972. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
  2973.     AX = FFBBh
  2974. Note:    available only when popped up
  2975. SeeAlso: AX=FFB4h
  2976. --------U-16FFBC-----------------------------
  2977. INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
  2978.     AX = FFBCh
  2979. --------U-16FFBD-----------------------------
  2980. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
  2981.     AX = FFBDh
  2982.     ???
  2983. Return: ???
  2984. --------U-16FFBE-----------------------------
  2985. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  2986.     AX = FFBEh
  2987.     ???
  2988. Return: ???
  2989. Note:    available only when popped up
  2990. --------U-16FFBF-----------------------------
  2991. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  2992.     AX = FFBFh
  2993.     BX = DOS file handle to write on
  2994.     ???
  2995. Return: ???
  2996. Note:    available only when popped up
  2997. --------U-16FFC0-----------------------------
  2998. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  2999.     AX = FFC0h
  3000.     ???
  3001. Return: AX = 0000h if successful
  3002.     AX = FFFFh on error
  3003. Note:    available only when popped up
  3004. --------U-16FFC1-----------------------------
  3005. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3006.     AX = FFC1h
  3007.     BL = ???
  3008.     ES:DI -> data structure (see #00623)
  3009.     ???
  3010. Return: AX = ???
  3011. Note:    available only when popped up
  3012. SeeAlso: AX=FFC2h,AX=FFC3h
  3013.  
  3014. Format of PC Tools DESKTOP data structure:
  3015. Offset    Size    Description    (Table 00623)
  3016.  00h    WORD    ???
  3017.  02h    WORD    ???
  3018.  04h    WORD    ???
  3019.  06h    WORD    ???
  3020.  08h    WORD    ???
  3021.  0Ah    BYTE    ???
  3022.  0Bh    BYTE    ??? (zero/nonzero)
  3023. ---v7.1---
  3024.  0Ch    WORD    ???
  3025.  0Eh    BYTE    ???
  3026.  0Fh    WORD    ???
  3027.  11h    WORD    ???
  3028.     ???
  3029. --------U-16FFC2-----------------------------
  3030. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3031.     AX = FFC2h
  3032.     BL = ???
  3033.     ES:DI -> data structure (see #00623)
  3034.     ???
  3035. Return: AH = ???
  3036.     CX = ???
  3037.     DH = ???
  3038.     DL = ???
  3039. Note:    available only when popped up
  3040. SeeAlso: AX=FFC1h,AX=FFC3h
  3041. --------U-16FFC3-----------------------------
  3042. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3043.     AX = FFC3h
  3044.     BL = ???
  3045.     ES:DI -> data structure (see #00623)
  3046.     ???
  3047. Return: AH = ???
  3048.     CX = ???
  3049.     DH = ???
  3050.     DL = ???
  3051. Note:    available only when popped up
  3052. SeeAlso: AX=FFC1h,AX=FFC2h
  3053. --------U-16FFC4-----------------------------
  3054. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  3055.     AX = FFC4h
  3056. Return: AL = ???
  3057.     BX = segment of scratch space???
  3058.     CX = segment of stored screen data (section covered by window???)
  3059.     DX = segment of window parameters for ???
  3060.     ES:BP -> ???
  3061. Note:    available only when popped up in versions prior to 6.0
  3062. --------U-16FFC5-----------------------------
  3063. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
  3064.     AX = FFC5h
  3065. Return: BL = Desktop state
  3066.         00h if nonresident
  3067.         nonzero if loaded resident
  3068. Note:    available only when popped up; should call AX=FFEFh first to ensure
  3069.       that DESKTOP is active
  3070. SeeAlso: AX=FFEFh,AX=FFF3h
  3071. --------U-16FFC6-----------------------------
  3072. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  3073.     AX = FFC6h
  3074.     BL = new value for ???
  3075. --------U-16FFC7-----------------------------
  3076. INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
  3077.     AX = FFC7h
  3078.     ???
  3079. Return: ???
  3080. --------U-16FFC8-----------------------------
  3081. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  3082.     AX = FFC8h
  3083. Return: DS:SI -> ???
  3084. Note:    valid only while popped up
  3085. --------U-16FFC9-----------------------------
  3086. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
  3087.     AX = FFC9h
  3088.     DS:SI -> characters to store in clipboard
  3089.     CX = size in bytes
  3090. Return: CF set on error
  3091. Notes:    available only when popped up
  3092.     while copying, bytes of 00h and 0Ah are skipped
  3093. --------U-16FFCA-----------------------------
  3094. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  3095.     AX = FFCAh
  3096.     DX = ???
  3097. Return: AX destroyed
  3098. Note:    available only when popped up
  3099. --------U-16FFCB-----------------------------
  3100. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
  3101.     AX = FFCBh
  3102.     DX = window specifier???
  3103. Return: AX destroyed
  3104. Note:    available only when popped up
  3105. SeeAlso: AX=FFB5h
  3106. --------U-16FFCC-----------------------------
  3107. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
  3108.     AX = FFCCh
  3109.     DS:SI -> ASCIZ string
  3110. Return: AX = ???
  3111.     CX = ???
  3112.     ES:DI -> address past last character displayed (v5.1/5.5)
  3113.           -> ??? on menu bar (v6.0)
  3114. --------U-16FFCD-----------------------------
  3115. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3116.     AX = FFCDh
  3117.     DS:DX -> ???
  3118. Return: ???
  3119. Note:    available only when popped up
  3120. --------U-16FFCE-----------------------------
  3121. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
  3122.     AX = FFCEh
  3123.     CX = ???
  3124. Return: nothing???
  3125. --------U-16FFCF-----------------------------
  3126. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
  3127.     AX = FFCFh
  3128. Note:    available only when popped up
  3129. --------U-16FFD0-----------------------------
  3130. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
  3131.     AX = FFD0h
  3132.     ???
  3133. Return: ???
  3134. Note:    available only when popped up
  3135. --------U-16FFD1-----------------------------
  3136. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
  3137.     AX = FFD1h
  3138. Return: BX = number of copies
  3139.     DX = destination
  3140.         00h cancel
  3141.         01h LPT1
  3142.         02h LPT2
  3143.         03h LPT3
  3144.         04h COM1
  3145.         05h COM2
  3146.         06h disk file
  3147. Note:    available only when popped up
  3148. --------U-16FFD2-----------------------------
  3149. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3150.     AX = FFD2h
  3151.     BX = ???
  3152. Return: BL = ???
  3153. Note:    available only when popped up
  3154. --------U-16FFD3-----------------------------
  3155. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3156.     AX = FFD3h
  3157.     DS:SI -> 92-byte data record for ???
  3158. Return: ???
  3159. SeeAlso: AX=FED3h
  3160. --------U-16FFD4BH3C-------------------------
  3161. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
  3162.     AX = FFD4h
  3163.     BH = 3Ch create file (with no attributes)
  3164.          3Dh open file
  3165.          41h delete file
  3166.     BL = access mode
  3167.          00h read only
  3168.          01h write only
  3169.          02h read/write
  3170.     DS:SI -> ASCIZ filename
  3171. Return: BX = file handle
  3172.         0000h on error
  3173. Note:    operation is attempted in (in order) the directory from which the
  3174.       desktop was started/run???, the directory specified with the
  3175.       filename, X:\PCTOOLS\, and X:\
  3176. --------U-16FFD5-----------------------------
  3177. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3178.     AX = FFD5h
  3179.     ???
  3180. Return: ???
  3181. Note:    available only when popped up
  3182. --------U-16FFD6-----------------------------
  3183. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3184.     AX = FFD6h
  3185.     BX = ???
  3186.     CX = ???
  3187.     DX = offset in ???
  3188.     ???
  3189. Return: ???
  3190. Note:    available only when popped up
  3191. --------U-16FFD7-----------------------------
  3192. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3193.     AX = FFD7h
  3194.     ???
  3195. Return: BL = ???
  3196. Note:    available only when popped up
  3197. --------U-16FFD8-----------------------------
  3198. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
  3199.     AX = FFD8h
  3200.     DS:BX -> ASCIZ filename
  3201. Return: BX = file handle
  3202.         0000h on error
  3203. Note:    pops up confirmation menu if file already exists
  3204.     only available when popped up???
  3205. --------U-16FFD9-----------------------------
  3206. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  3207.     AX = FFD9h
  3208. Return: AX = ???
  3209. Note:    available only when popped up
  3210. --------U-16FFDA-----------------------------
  3211. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
  3212.     AX = FFDAh
  3213.     DS:SI -> ??? (v5.1/5.5 only)
  3214. Return: DS:SI -> filename
  3215. --------U-16FFDB-----------------------------
  3216. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  3217.     AX = FFDBh
  3218.     BL = ???
  3219. Note:    available only when popped up
  3220. --------U-16FFDC-----------------------------
  3221. INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
  3222.     AX = FFDCh
  3223. Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
  3224.       original values
  3225. Index:    uninstall;PC Tools DESKTOP
  3226. --------U-16FFDDBX0000-----------------------
  3227. INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
  3228.     AX = FFDDh
  3229.     BX = 0000h
  3230. Return: CX = 5555h
  3231.     DX = 5555h if PCShell installed in resident mode
  3232. --------U-16FFDDBX0001-----------------------
  3233. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  3234.     AX = FFDDh
  3235.     BX = 0001h
  3236. Return: CF clear if request successful (PCShell will pop up)
  3237.     CF set on error
  3238. SeeAlso: AX=FFDDh/BX=0003h
  3239. --------U-16FFDDBX0002-----------------------
  3240. INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
  3241.     AX = FFDDh
  3242.     BX = 0002h
  3243. Return: AL =
  3244.         00h ???
  3245.         01h ???
  3246. Note:    PCShell v6.0+ displays the error message "Incorrect PCRUN version",
  3247.       awaits a keystroke, and aborts the current process
  3248. --------U-16FFDDBX0003-----------------------
  3249. INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
  3250.     AX = FFDDh
  3251.     BX = 0003h
  3252. SeeAlso: AX=FFDDh/BX=0001h
  3253. --------U-16FFDDBX0004-----------------------
  3254. INT 16 U - PC Tools v5.1+ PCShell API - GET ???
  3255.     AX = FFDDh
  3256.     BX = 0004h
  3257. Return: CF clear if successful
  3258.         DS:SI -> ???
  3259. --------U-16FFDDBX0005-----------------------
  3260. INT 16 U - PC Tools v5.1+ PCShell API - ???
  3261.     AX = FFDDh
  3262.     BX = 0005h
  3263.     ???
  3264. Return: ???
  3265. Note:    resets various variables if certain conditions are met
  3266. --------U-16FFDDBX0006-----------------------
  3267. INT 16 U - PC Tools v5.1+ PCShell API - ???
  3268.     AX = FFDDh
  3269.     BX = 0006h
  3270.     ???
  3271. Return: ???
  3272. Note:    resets various variables if certain conditions are met
  3273. --------U-16FFDDBX0007-----------------------
  3274. INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
  3275.     AX = FFDDh
  3276.     BX = 0007h
  3277. Return: CF clear if successful
  3278. SeeAlso: AX=FFDDh/BX=0008h
  3279. --------U-16FFDDBX0008-----------------------
  3280. INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
  3281.     AX = FFDDh
  3282.     BX = 0008h
  3283. Return: CF undefined
  3284. SeeAlso: AX=FFDDh/BX=0007h
  3285. --------U-16FFDDBX0009-----------------------
  3286. INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
  3287.     AX = FFDDh
  3288.     BX = 0009h
  3289. Return: CF clear if successful
  3290.         DS:SI -> list of pointers (see #00624)
  3291.  
  3292. Format of PC Tools PCShell returned pointer list:
  3293. Offset    Size    Description    (Table 00624)
  3294.  00h    WORD    offset of WORD containing ???
  3295.  02h    WORD    offset of name of program to execute
  3296.  04h    WORD    offset of 80-byte buffer for ???
  3297.  06h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  3298.  08h    WORD    offset of buffer for ??? (length in WORD preceding buffer)
  3299. --------U-16FFDDBX000A-----------------------
  3300. INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
  3301.     AX = FFDDh
  3302.     BX = 000Ah
  3303. Return: CX = 5555h if running
  3304.     DX = 5555h
  3305. Note:    also sets a flag
  3306. --------U-16FFDDBX000B-----------------------
  3307. INT 16 U - PC Tools v6.0+ PCRUN API - ???
  3308.     AX = FFDDh
  3309.     BX = 000Bh
  3310.     ???
  3311. Return: CX = 5555h if PCRUN active
  3312.     DX = 5555h
  3313. Note:    also clears flag set by AX=FFDDh/BX=000Ah
  3314. --------U-16FFDE-----------------------------
  3315. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
  3316.     AX = FFDEh
  3317.     DS:DX -> menu description (must be on a paragraph boundary)
  3318. Return: AX = ???
  3319.         AL seems to be the number of the selected button
  3320. Note:    available only when popped up
  3321. SeeAlso: AX=FFEEh
  3322. --------U-16FFDF-----------------------------
  3323. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3324.     AX = FFDFh
  3325.     ???
  3326. Return: ???
  3327. --------U-16FFE0-----------------------------
  3328. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3329.     AX = FFE0h
  3330.     CX = ???
  3331.     DX = ???
  3332. Note:    available only when popped up
  3333. --------U-16FFE1-----------------------------
  3334. INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
  3335.     AX = FFE1h
  3336. --------U-16FFE2-----------------------------
  3337. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3338.     AX = FFE2h
  3339.     DX = ???
  3340. Return: ???
  3341. Note:    available only when popped up
  3342. --------U-16FFE3-----------------------------
  3343. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
  3344.     AX = FFE3h
  3345.     BL = character to print to currently open printer or print file
  3346. Return: CF set on error
  3347. Note:    available only when popped up
  3348. SeeAlso: INT 17/AH=00h
  3349. --------U-16FFE4-----------------------------
  3350. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3351.     AX = FFE4h
  3352.     DX = segment of ???
  3353. Return: ???
  3354. Note:    available only when popped up
  3355. --------U-16FFE5-----------------------------
  3356. INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
  3357.     AX = FFE5h
  3358.     DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
  3359.     DX = segment of window parameters???
  3360. Return: AX = DOS file handle for file
  3361.         DS:DX -> filename???
  3362.         FFFFh if function cancelled by user
  3363. Note:    available only when popped up
  3364. SeeAlso: AX=FFDAh
  3365. --------U-16FFE6-----------------------------
  3366. INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
  3367.     AX = FFE6h
  3368. Return: AX = 0000h if no key available
  3369.          else  BIOS keycode
  3370. Notes:    available only when popped up
  3371.     invokes INT 28 idle interrupt before checking for key
  3372. --------U-16FFE7-----------------------------
  3373. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3374.     AX = FFE7h
  3375.     BX = segment of ???
  3376. Return: ???
  3377. Note:    available only when popped up
  3378. --------U-16FFE8-----------------------------
  3379. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
  3380.     AX = FFE8h
  3381.     CX = number
  3382.     DH = attribute
  3383.     DS:SI -> destination for ASCII number
  3384. Return: DS:SI buffer filled in with alternating characters and attributes
  3385. --------U-16FFE9-----------------------------
  3386. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
  3387.     AX = FFE9h
  3388. Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
  3389. Note:    available only when popped up
  3390. --------U-16FFEA-----------------------------
  3391. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
  3392.     AX = FFEAh
  3393.     DS:SI -> counted string (count byte followed by string)
  3394. Return: ???
  3395. Note:    available only when popped up
  3396. --------U-16FFEB-----------------------------
  3397. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3398.     AX = FFEBh
  3399.     ???
  3400. Return: ???
  3401. --------U-16FFEC-----------------------------
  3402. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
  3403.     AX = FFECh
  3404.     DS:SI -> FAR routine to ???
  3405.     BX = ???
  3406.     ???
  3407. Return: AX = keystroke
  3408.         FFFFh if F10 pressed to go to menu
  3409. Notes:    available only when popped up
  3410.     invokes INT 28 while waiting for keystroke
  3411.     F10 is hotkey to Desktop menu
  3412. Index:    hotkeys;PC Tools DESKTOP
  3413. --------U-16FFED-----------------------------
  3414. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
  3415.     AX = FFEDh
  3416. Return: AX = ???
  3417. Note:    available only when popped up
  3418. --------U-16FFEE-----------------------------
  3419. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
  3420.     AX = FFEEh
  3421.     DS:SI -> pulldown menu system description (see #00625)
  3422. Return: AX destroyed
  3423. Notes:    available only when popped up
  3424.     if the accessory does not need any menu items of its own, it should
  3425.       call AX=FFFAh instead
  3426. SeeAlso: AX=FFF7h,AX=FFFAh
  3427.  
  3428. Format of PC Tools DESKTOP pulldown menu system description:
  3429. Offset    Size    Description    (Table 00625)
  3430.  00h    WORD    offset of menu bar contents (counted string)
  3431.  02h    WORD    number of items on menu bar
  3432.  04h 10 BYTEs    scan codes for hotkeying to each of up to ten menu items
  3433.  0Eh 10 BYTEs    which character to highlight in each menu item (01h=first)
  3434.  18h    WORD    offset of first menu definition (see #00626)
  3435.  1Ah    WORD    offset of second menu definition
  3436.     ...
  3437.  
  3438. Format of PC Tools DESKTOP menu definition:
  3439. Offset    Size    Description    (Table 00626)
  3440.  00h    WORD    offset of menu contents (see #00627)
  3441.  02h    WORD    number of entries in menu
  3442.  04h    for each entry:
  3443.         Offset    Size    Description
  3444.          00h    BYTE    scancode of Alt-key to invoke entry
  3445.          01h    BYTE    character to highlight (01h=first, etc)
  3446.          02h    WORD    offset of FAR routine to handle selection
  3447.  
  3448. Format of PC Tools DESKTOP menu contents:
  3449. Offset    Size    Description    (Table 00627)
  3450.  00h    BYTE    number of lines in menu
  3451.  01h    BYTE    width of menu
  3452.  02h  N BYTEs    counted strings, one for each line in menu
  3453. --------U-16FFEFCX0000-----------------------
  3454. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
  3455.     AX = FFEFh
  3456.     CX = 0000h
  3457. Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
  3458.         BX = segment of resident portion
  3459.         AX = ??? (v5.1/5.5 only)
  3460. SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
  3461. --------U-16FFF0-----------------------------
  3462. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
  3463.     AX = FFF0h
  3464.     DX = ???
  3465. Return: AX destroyed
  3466. Note:    available only when popped up
  3467. --------U-16FFF1BX0000-----------------------
  3468. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
  3469.     AX = FFF1h
  3470.     BX = 0000h  leave ??? flag as is
  3471.         nonzero set ??? flag
  3472. Return: CX = 5555h if installed
  3473.     DX = 5555h
  3474. --------U-16FFF2-----------------------------
  3475. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
  3476.     AX = FFF2h
  3477.     DS:SI -> ASCIZ function key label string (each label preceded by '[')
  3478.         or help text
  3479. Return: AX destroyed
  3480. Notes:    available only when popped up
  3481.     if the specified string does not start with '[', it is displayed
  3482.       centered on the bottom line, else the function key labels are shown
  3483. --------U-16FFF3-----------------------------
  3484. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
  3485.     AX = FFF3h
  3486. Note:    releases any EMS being used; restores video mode, page, and cursor
  3487.       shape; and restores interrupt vectors
  3488. SeeAlso: AX=FFC5h,AX=FFEFh
  3489. Index:    uninstall;PC Tools DESKTOP
  3490. --------U-16FFF4-----------------------------
  3491. INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
  3492.     AX = FFF4h
  3493.     ???
  3494. Return: ???
  3495. Note:    available only when popped up
  3496. SeeAlso: AX=FFF6h
  3497. --------U-16FFF5-----------------------------
  3498. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
  3499.     AX = FFF5h
  3500. Return: ES:BX -> screen attributes data structure (see #00628)
  3501.     AL = ??? (v6.0+)
  3502.  
  3503. Format of PC Tools DESKTOP attribute data structure:
  3504. Offset    Size    Description    (Table 00628)
  3505.  -1    BYTE    attribute for desktop background
  3506.  00h    BYTE    attribute for normal characters on desktop menu
  3507.  01h    BYTE    attribute for highlighted characters on desktop menu
  3508.  02h  5 BYTEs    ???
  3509.  07h    BYTE    attribute for dialog boxes
  3510.  08h 15 BYTEs    ???
  3511.  17h    BYTE    attribute for message boxes
  3512. --------U-16FFF6-----------------------------
  3513. INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
  3514.     AX = FFF6h
  3515.     DS = segment of editor buffer structure (see #00629)
  3516.     BX = ???
  3517.     DX = segment of window parameters structure (see #00622)
  3518. Return: ???
  3519. Note:    available only when popped up
  3520. SeeAlso: AX=FFF4h
  3521.  
  3522. Format of PC Tools DESKTOP editor buffer structure:
  3523. Offset    Size    Description    (Table 00629)
  3524.  00h    WORD    offset of current cursor position in buffer segment
  3525.  02h  2 BYTEs    ???
  3526.  04h    WORD    offset of beginning of file data in buffer segment
  3527.  06h 10 BYTEs    ???
  3528.  10h  N BYTEs    ASCIZ name of file being edited
  3529. --------U-16FFF7-----------------------------
  3530. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
  3531.     AX = FFF7h
  3532.     DS:SI -> ???
  3533.     ???
  3534. Return: ???
  3535. Notes:    available only when popped up
  3536.     performs input processing on the menu bar set up with AX=FFEEh
  3537. SeeAlso: AX=FFEEh,AX=FFFBh
  3538. --------U-16FFF8-----------------------------
  3539. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
  3540.     AX = FFF8h
  3541.     DS:0000h -> window parameters structure (see #00622)
  3542.     DS:BX -> DWORD to store address of ??? on screen
  3543. Return: ???
  3544. --------U-16FFF9-----------------------------
  3545. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
  3546.     AX = FFF9h
  3547.     ES:BX -> FAR routine to redisplay the utility's window
  3548. Note:    available only when popped up
  3549. --------U-16FFFA-----------------------------
  3550. INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
  3551.     AX = FFFAh
  3552. Notes:    available only when popped up
  3553.     adds the "Window" option to the "Desktop" option which is the only one
  3554.       available when no accessories are active.  Unlike AX=FFEEh, no
  3555.       additional menu items are added between "Desktop" and "Window"
  3556. SeeAlso: AX=FFEEh,AX=FFFBh
  3557. --------U-16FFFB-----------------------------
  3558. INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
  3559.     AX = FFFBh
  3560. Return: ???
  3561. Notes:    available only when popped up
  3562.     performs input processing on the standard menu bar set up with AX=FFFAh
  3563. SeeAlso: AX=FFF7h
  3564. --------U-16FFFC-----------------------------
  3565. INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
  3566.     AX = FFFCh
  3567. Return: ES:BX -> hotkey table (see #00630)
  3568.     DS:DX = original INT 09 vector
  3569.  
  3570. Format of PC Tools DESKTOP hotkey table:
  3571. Offset    Size    Description    (Table 00630)
  3572.  00h  2 BYTEs    scancode/shift state for desktop hotkey
  3573.  02h  2 BYTEs    scancode/shift state for clipboard paste key
  3574.  04h  2 BYTEs    scancode/shift state for clipboard copy key
  3575.  06h  2 BYTEs    scancode/shift state for screen autodial key
  3576. --------U-16FFFD-----------------------------
  3577. INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
  3578.     AX = FFFDh
  3579. Return: AX destroyed
  3580. Note:    copies 4000 bytes from ??? to ??? under certain circumstances
  3581. SeeAlso: AX=FF91h,AX=FF92h
  3582. --------M-16FFFE-----------------------------
  3583. INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
  3584.     AX = FFFEh
  3585. SeeAlso: AX=FFFFh,INT 33/AX=0001h
  3586. --------M-16FFFF-----------------------------
  3587. INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
  3588.     AX = FFFFh
  3589. SeeAlso: AX=FFFEh,INT 33/AX=0002h
  3590. --------P-17----DX0ABC-----------------------
  3591. INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
  3592.     DX = 0ABCh
  3593. Return: AX = AAAAh
  3594.     DX = BAAAh
  3595.     ES = code segment of resident portion
  3596. --------P-17----DX0B90-----------------------
  3597. INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
  3598.     DX = 0B90h
  3599. Return: DX = ABBBh
  3600.     ES = code segment of resident portion
  3601. --------P-17----DX0B91-----------------------
  3602. INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
  3603.     DX = 0B91h
  3604. Return: DX = ABCBh
  3605.     ES = code segment of resident portion
  3606. --------P-17----DX0F5F-----------------------
  3607. INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
  3608.     DX = 0F5Fh
  3609. Return: AX = AAAAh
  3610.     DX = F555h
  3611.     ES = code segment of resident portion
  3612. --------B-1700-------------------------------
  3613. INT 17 - PRINTER - WRITE CHARACTER
  3614.     AH = 00h
  3615.     AL = character to write
  3616.     DX = printer number (00h-02h)
  3617. Return: AH = printer status (see #00631)
  3618. SeeAlso: AH=02h,AH=84h"AX",AX=6F02h,AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
  3619. SeeAlso: INT 4B/AH=00h,PORT 0278h"PRINTER",MEM 0040h:0008h,MEM 0040h:0078h
  3620.  
  3621. Bitfields for printer status:
  3622. Bit(s)    Description    (Table 00631)
  3623.  7    not busy
  3624.  6    acknowledge
  3625.  5    out of paper
  3626.  4    selected
  3627.  3    I/O error
  3628.  2-1    unused
  3629.  0    timeout
  3630. Note:    for Tandy 2000, bit 7 indicates printer-busy when set rather than clear
  3631. --------B-1701-------------------------------
  3632. INT 17 - PRINTER - INITIALIZE PORT
  3633.     AH = 01h
  3634.     DX = printer number (00h-02h)
  3635. Return: AH = printer status (see #00631)
  3636. Note:    some printers report that they are ready immediately after
  3637.       initialization when they actually are not; a more reliable result may
  3638.       be obtained by calling AH=02h after a brief delay
  3639. SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC",INT 4B/AH=01h
  3640. --------B-1702-------------------------------
  3641. INT 17 - PRINTER - GET STATUS
  3642.     AH = 02h
  3643.     DX = printer number (00h-02h)
  3644. Return: AH = printer status (see #00631)
  3645. Note:    PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
  3646. SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC",INT 4B/AH=02h
  3647. --------P-1702--DX0000-----------------------
  3648. INT 17 - INSET - INSTALLATION CHECK
  3649.     AH = 02h
  3650.     DX = 0000h
  3651.     CX = 07C3h (1987d)
  3652. Return: CX = 07C2h (1986d) if installed
  3653. Program: INSET is a text/graphics integration program
  3654. --------b-170200BX5050-----------------------
  3655. INT 17 - Enhanced Parallel Port (EPP) BIOS - INSTALLATION CHECK
  3656.     AX = 0200h
  3657.     BX = 5050h ('PP')
  3658.     CH = 45h   ('E')
  3659.     DX = printer port number (00h-02h)
  3660. Return: AH = status
  3661.         00h if installed and port is an enhanced parallel port
  3662.         CX:AL = installed BIOS type
  3663.             5050h:45h ('PPE') if EPP v3.0+ BIOS installed
  3664.             4550h:50h ('EPP') if EPP v1.0 BIOS installed
  3665.         ---EPP 1.0, 3.0---
  3666.         DX:BX -> far entry point to Advanced BIOS (see #00632)
  3667.         ---EPP Revision 7---
  3668.         DX = EPP I/O base address
  3669.         ES:BX -> far entry point to EPP BIOS (see #00632,#00633)
  3670.         03h if installed but specified port not supported
  3671.         CF set
  3672. Program: The Enhanced Parallel Port BIOS provides support for parallel
  3673.       port peripherals using the enhanced modes of the IEEE 1284.
  3674. SeeAlso: AH=E0h,MEM 0040h:0008h,MEM 0040h:00DCh
  3675.  
  3676. (Table 00632)
  3677. Call EPP BIOS entry point with:
  3678.     DL = port number (v1.0,v3.0)
  3679.     DX = (Revision 7) EPP port I/O base address
  3680.     AH = function
  3681.         00h Query Configuration
  3682.         Return: AH = 00h if successful
  3683.                 AL = IRQ number used by port or FFh if no IRQ
  3684.                 BH = EPP BIOS revision (major in high nybble,
  3685.                   minor in low nybble)
  3686.                 BL = I/O capabilities (see #00635)
  3687.                 ES:DI -> ASCIZ driver information/version text
  3688.                 ---v1.0,v3.0---
  3689.                 CX = I/O port base address for parallel port
  3690.                 ---Revision 7---
  3691.                 CL = EPP chipset code (see #00636)
  3692.                 CH = hardware manufacturer's product code
  3693.         01h Set Mode
  3694.         AL = mode bits (see #00637)
  3695.         Return: AX,BX destroyed
  3696.         02h Get Mode
  3697.         Return: AL = mode bits (see also #00637)
  3698.                 bit 7: EPP port interrupts enabled
  3699.             AH = 00h
  3700.             CF clear
  3701.             BX destroyed
  3702.         03h Interrupt Control
  3703.         AL = subfunction
  3704.             00h enable parallel port interrupts
  3705.             01h disable parallel port interrupts
  3706.         Return: AH = status (00h,05h,06h) (see also #00634)
  3707.         04h EPP Reset
  3708.         Return: AH = 00h if successful
  3709.             AL destroyed
  3710.         05h perform Address-Write/Device-Select I/O cycle
  3711.         AL = device address
  3712.         Return: AH = status
  3713.             AL destroyed
  3714.         06h perform Address-Read I/O cycle
  3715.         Return: AL = returned address/device data
  3716.             AH = status
  3717.         07h write byte
  3718.         AL = data byte to write
  3719.         Return: AH = status
  3720.         08h output block of data
  3721.         DS:SI -> block of data to be sent to parallel port
  3722.         CX = number of bytes to output
  3723.         Return: AH = status (see #00634)
  3724.             CX = number of unsent bytes
  3725.         09h read byte of data
  3726.         Return: AH = status (see #00634)
  3727.             AL = byte read from parallel port
  3728.         0Ah read block of data
  3729.         ES:DI -> buffer for received data
  3730.         CX = number of bytes to read from paralle port
  3731.         Return: AH = status (see #00634)
  3732.             ES:DI buffer filled if successful
  3733.             CX = number of bytes not transferred
  3734.         0Bh Address/Byte-Read
  3735.         AL = device address
  3736.         Return: AH = status (see #00634)
  3737.             AL = byte read if successful
  3738.         0Ch Address/Byte-Write
  3739.         AL = device address
  3740.         DH = data byte (v1.0,v3.0)
  3741.         CL = data byte (Revision 7)
  3742.         Return: AH = status (see #00634)
  3743.         0Dh Address/Block-Read
  3744.         AL = device address
  3745.         ES:DI -> buffer for received data
  3746.         CX = number of bytes to read
  3747.         Return: AH = status (see #00634)
  3748.             CX = number of bytes NOT transferred
  3749.         0Eh Address/Block-Write
  3750.         AL = device address
  3751.         ES:DI -> data to be sent (v1.0,v3.0)
  3752.         DS:SI -> data to be send (Revision 7)
  3753.         CX = number of bytes to write
  3754.         Return: AH = status (see #00634)
  3755.             CX = number of bytes NOT transferred
  3756.         0Fh Lock Port
  3757.         AL = multiplexor port number
  3758.             bits 7-4: daisy chain port number (1-8)
  3759.             bits 3-0: mux device port number (1-8, 0 if no mux)
  3760.         Return: AH = status (00h,03h,05h) (see #00634)
  3761.         10h Unlock Port
  3762.         AL = multiplexor port number
  3763.             bits 7-4: daisy chain port number (1-8)
  3764.             bits 3-0: mux device port number (1-8, 0 if no mux)
  3765.         Return: AH = status (00h,03h,05h) (see #00634)
  3766.         11h Device Interrupt
  3767.         BL = multiplexor port number
  3768.             00h if no multiplexor, else mux device port (01h-08h)
  3769.         AL = subfunction
  3770.             00h disable device interrupts
  3771.             01h enable device interrupt
  3772.             ES:DI -> interrupt event handler
  3773.         Return: AH = status (00h,03h,05h,06h) (see #00634)
  3774.         Note:    AMI BIOS v1.00.12.AX1T ignores the multiplexor port
  3775.               number; it also always sets INT 0F to the address
  3776.               specified in ES:DI
  3777.         12h Real-Time Mode
  3778.         AL = subfunction
  3779.             00h check whether any real-time devices present
  3780.             01h add (advertise) real-time device
  3781.             02h remove real-time device
  3782.         Return: AH = status (00h,05h,06h,07h) (see #00634)
  3783.             AL = real-time devices present? (00h no, 01h yes)
  3784.         Note:    unlike all other functions, this one does not use DL/DX
  3785. Return: AH = status (see #00634)
  3786.     CF clear if successful
  3787.     CF set on error
  3788.     BX destroyed
  3789. SeeAlso: #00633
  3790.  
  3791. (Table 00633)
  3792. Call EPP BIOS (Revision 7) entry point multiplexor functions with:
  3793.     DX = EPP port base I/O address
  3794.     AH = function
  3795.         40h Query Mux
  3796.         Return: AH = status (see #00634)
  3797.             AL = currently-selected port
  3798.             CH = status flags
  3799.                 bit 0: channel locked
  3800.                 bit 1: interrupt pending
  3801.             BH destroyed
  3802.         Note:    the PhoenixBIOS v4.0 documentation lists BL as the
  3803.               currently-selected port and AL as the status flags
  3804.         41h Query Device Port
  3805.         AL = EPP multiplex device port (1-8)
  3806.         Return: AH = status (see #00634)
  3807.             CH = status flags (see #00638)
  3808.             BX = EPP product/device ID (0000h if undefined)
  3809.         Note:    the PhoenixBIOS v4.0 documentation lists AL as the
  3810.               status flags and CX as the device ID
  3811.         42h Set Product ID
  3812.         AL = EPP multiplex device port (1-8)
  3813.         CX = EPP product ID
  3814.         Return: AH = status (see #00634)
  3815.             BX destroyed
  3816.         50h Query Daisy Chain
  3817.         AL = EPP multiplexor device port (1-8)
  3818.         Return: AH = status (see #00634)
  3819.             CH = status flags
  3820.                 bit 0: channel locked
  3821.                 bit 1: interrupt pending
  3822.             BL = currently-selected device
  3823.             BH = EPP daisy chain revision (high nybble = major)
  3824.             CL = daisy-chain depth (00h if no daisy chain)
  3825.             ES:DI -> ASCIZ driver vendor identification string
  3826.         Note:    the PhoenixBIOS v4.0 documentation lists AH=51h as
  3827.               "Query Daisy Chain" and BL as the multiplexor port;
  3828.               it also lists AL as status flags on return
  3829.         51h Rescan Daisy Chain (dynamically reassign port numbers)
  3830.         AL = EPP multiplexor device port (1-8)
  3831.         Return: AH = status (see #00634)
  3832.             BX destroyed
  3833.         Note:    the PhoenixBIOS v4.0 documentation lists AH=50h as
  3834.               "Rescan Daisy Chain" and BL as the multiplexor port
  3835. Notes:    these functions are only valid if a port multiplexor or daisy chain
  3836.       is present
  3837.     PhoenixBIOS 4.0 documents function 50h as "Rescan" and 51h as
  3838.       "Query Daisy Chain"
  3839. SeeAlso: #00632,INT 2D/AL=DCh
  3840.  
  3841. (Table 00634)
  3842. Values for EPP BIOS function status:
  3843.  00h    successful
  3844.  02h    unsupported command/feature
  3845.  03h    unsupported parallel port
  3846.  05h    unsupported in current mode
  3847.  06h    invalid subfunction
  3848.  07h    already ???
  3849.  20h    multiplexor not present (AMI)
  3850.  40h    multiplexor not present
  3851.  41h    multiplexor currently locked
  3852.  80h    I/O timeout
  3853.  FFh    invalid/unsupported function
  3854. SeeAlso: #00632,#00633
  3855.  
  3856. Bitfields for EPP (v3.0, Revision 7) I/O capabilities:
  3857. Bit(s)    Description    (Table 00635)
  3858.  0    multiplexor present
  3859.  1    PS/2 bi-directional capable
  3860.  2    daisy chain present
  3861.  3    ECP capable
  3862.  4    EPP software emulation supported
  3863.  5    EPP capable
  3864.  6    fast Centronics supported
  3865.  7    standard EPP I/O map
  3866. SeeAlso: #00632
  3867.  
  3868. (Table 00636)
  3869. Values for EPP (Revision 7) chipset code:
  3870.  00h    Intel SL
  3871.  01h    FarPoint Communications
  3872.  02h    SMC
  3873.  03h    Chips&Technologies
  3874.  04h    Western Digital
  3875.  05h    National Semiconductor
  3876. SeeAlso: #00632
  3877.  
  3878. Bitfields for EPP BIOS mode bits:
  3879. Bit(s)    Description    (Table 00637)
  3880.  0    set compatibility mode
  3881.  1    set bi-directional mode
  3882.  2    set EPP mode
  3883. ---Revision 7,v3.0---
  3884.  3    set ECP mode
  3885.  4    set EPP software emulation
  3886.  5    set fast Centronics mode
  3887.  6-7 reserved (0)
  3888. SeeAlso: #00632,#M0053
  3889.  
  3890. Bitfields for EPP BIOS multiplex status flags:
  3891. Bit(s)    Description    (Table 00638)
  3892.  0    port is selected
  3893.  1    port is locked
  3894.  2    interrupts are enabled
  3895.  3    interrupt pending
  3896. SeeAlso: #00633
  3897. --------P-1703-------------------------------
  3898. INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
  3899.     AH = 03h
  3900. Return: BX = ???
  3901.     CX = ???
  3902. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  3903.       Vertisoft Systems, Inc.
  3904. SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
  3905. ----------1703-------------------------------
  3906. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  3907.     AH = 03h
  3908. SeeAlso: AH=04h"IBM",AH=05h"IBM"
  3909. --------c-1703-------------------------------
  3910. INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
  3911.     AH = 03h
  3912.     DX = printer port number
  3913.     CX = number of characters to print
  3914.     DS:SI -> string
  3915. Return: AH = printer status (see #00631)
  3916.     CX = number of characters actually printed
  3917. Desc:    send an entire string of chars to the print spooler with a single call
  3918. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  3919.       operating system by The Software Link, Inc.
  3920. SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
  3921. --------c-1703--BX5A00-----------------------
  3922. INT 17 - DMP Print Spooler v2.03 - INSTALLATION CHECK
  3923.     AH = 03h
  3924.     BX = 5A00h
  3925. Return: AX = 5ACBh
  3926.     DI = 0000h
  3927.     ES = DMP code segment (also data segment)
  3928. Program: DMP is a Printer driver/spooler, by DMP (USA), available on the
  3929.       PCTODAY disk, volume 10, March 1991
  3930. --------N-170300-----------------------------
  3931. INT 17 - DOSISODE to WATTCP TSR Interface - "socket"
  3932.     AX = 0300h
  3933.     CX = type of socket from  socket( domain, type, protocol )
  3934.     DX = local identifier of socket (0 - 31)
  3935. Return: AX = 0000h success
  3936.         CX = segment of 4500 byte transfer buffer
  3937.         DX = offset of 4500 byte transfer buffer
  3938.        = FFFFH failure
  3939.         CX = error code
  3940.         ENFILE        23
  3941. Program: DOSISODE is the ISO developers environment which has been ported to
  3942.       DOS and will run with the Waterloo TCP turned into a resident TSR.
  3943.       Currently it allows a maximum of 6 open sockets.
  3944. Note:    this function will initialize the interface the first time it is
  3945.       called
  3946. SeeAlso: AX=0400h"DOSISODE",AX=0600h"DOSISODE",AX=0800h"DOSISODE"
  3947. SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  3948. --------P-1704-------------------------------
  3949. INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
  3950.     AH = 04h
  3951. Note:    has no effect unless ELTSR is deactivated (see AX=0503h)
  3952. SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
  3953. ----------1704-------------------------------
  3954. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  3955.     AH = 04h
  3956. SeeAlso: AH=03h"IBM",AH=05h"IBM"
  3957. --------N-170400-----------------------------
  3958. INT 17 - DOSISODE to WATTCP TSR Interface - "bind"
  3959.     AX = 0400h
  3960. Note:    this function just returns
  3961. SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0C00h"DOSISODE"
  3962. ----------1705-------------------------------
  3963. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  3964.     AH = 05h
  3965. SeeAlso: AH=03h"IBM",AH=04h"IBM"
  3966. --------P-170500-----------------------------
  3967. INT 17 U - Emulaser ELTSR - ???
  3968.     AX = 0500h
  3969.     ???
  3970. Return: AX = unload status (0001h safe to unload, 0002h not safe)
  3971.     BX = ???
  3972.     CX = PSP segment of ELTSR
  3973.     DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
  3974.     SI = ???
  3975.     DI = ???
  3976. SeeAlso: AH=04h,INT 1A/AH=E5h
  3977. --------N-170500-----------------------------
  3978. INT 17 - DOSISODE to WATTCP TSR Interface - "connect"
  3979.     AX = 0500h
  3980. SeeAlso: AX=0400h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
  3981. --------P-170501-----------------------------
  3982. INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
  3983.     AX = 0501h
  3984. Return: (see AX=0500h)
  3985. Note:    restores interrupt vectors without checking whether they have been
  3986.       hooked by later programs; should only be called if ELTSR reports
  3987.       that it is safe to unload
  3988. SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
  3989. Index:    uninstall;Emulaser ELTSR
  3990. --------P-170502-----------------------------
  3991. INT 17 U - Emulaser ELTSR - SET ???
  3992.     AX = 0502h
  3993.     BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
  3994.     CL = ???
  3995.     DL = ???
  3996. Return: (see AX=0500h)
  3997. SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
  3998. --------P-170503-----------------------------
  3999. INT 17 U - Emulaser ELTSR - DEACTIVATE???
  4000.     AX = 0503h
  4001. Return: (see AX=0500h)
  4002. SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
  4003. --------P-1706-------------------------------
  4004. INT 17 U - Emulaser ELTSR - ???
  4005.     AH = 06h
  4006.     ???
  4007. Return: ???
  4008. SeeAlso: AX=0500h,AX=0503h,AH=07h"ELTSR",INT 1A/AH=E5h
  4009. --------N-170600-----------------------------
  4010. INT 17 - DOSISODE to WATTCP TSR Interface - "listen"
  4011.     AX = 0600h
  4012. Note:    this function just returns
  4013. SeeAlso: AX=0300h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
  4014. SeeAlso: AX=0E00h"DOSISODE"
  4015. --------P-1707-------------------------------
  4016. INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
  4017.     AH = 07h
  4018.     ES:DX -> ASCIZ filename to be opened
  4019. Return: ???
  4020. Note:    new output will be appended to the specified file
  4021. SeeAlso: AH=08h,INT 1A/AH=E5h
  4022. --------N-170700-----------------------------
  4023. INT 17 - DOSISODE to WATTCP TSR Interface - "accept"
  4024.     AX = 0700h
  4025. Note:    this function just returns
  4026. SeeAlso: AX=0600h"DOSISODE",AX=0800h"DOSISODE",AX=0C00h"DOSISODE"
  4027. --------P-1708-------------------------------
  4028. INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
  4029.     AH = 08h
  4030.     ???
  4031. Return: ???
  4032. Desc:    close the file previously opened by function 07h
  4033. SeeAlso: AH=07h,INT 1A/AH=E5h
  4034. --------N-170800-----------------------------
  4035. INT 17 - DOSISODE to WATTCP TSR Interface - "recvfrom"
  4036.     AX = 0800h
  4037. SeeAlso: AX=0500h"DOSISODE",AX=0900h"DOSISODE",AX=0A00h"DOSISODE"
  4038. --------P-1709-------------------------------
  4039. INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
  4040.     AH = 09h
  4041.     BX = ???
  4042.     CX = ???
  4043.     DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
  4044. Return: AX = status
  4045.         00h successful
  4046.         FFh failed
  4047. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  4048.       Vertisoft Systems, Inc.
  4049. Note:    this function calls through to INT 1A/AX=E401h, and thus requires
  4050.       that either ELSPL or Disk Spool II be installed
  4051. SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
  4052. --------N-170900-----------------------------
  4053. INT 17 - DOSISODE to WATTCP TSR Interface - "sendto"
  4054.     AX = 0900h
  4055. SeeAlso: AX=0700h"DOSISODE",AX=0800h"DOSISODE",AX=0A00h"DOSISODE"
  4056. --------P-170A-------------------------------
  4057. INT 17 U - Emulaser ELTSR - SET ??? FILENAME
  4058.     AH = 0Ah
  4059.     ES:BX -> ??? buffer
  4060.     CX = length of ??? buffer
  4061. Return: ???
  4062. Note:    copies the specified name into the buffer passed to ELSPL as the
  4063.       filename by AH=09h
  4064. SeeAlso: AH=09h,INT 1A/AH=E5h
  4065. --------N-170A00-----------------------------
  4066. INT 17 - DOSISODE to WATTCP TSR Interface - "select"
  4067.     AX = 0A00h
  4068. SeeAlso: AX=0800h"DOSISODE",AX=0B00h"DOSISODE",AX=0E00h"DOSISODE"
  4069. --------P-170B-------------------------------
  4070. INT 17 U - Emulaser ELTSR - GET ???
  4071.     AH = 0Bh
  4072. Return: AX:BX -> ???
  4073. SeeAlso: AH=0Ah,INT 1A/AH=E5h
  4074. ----------170B-------------------------------
  4075. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  4076.     AH = 0Bh
  4077. SeeAlso: AH=03h"IBM",AH=0Ch"IBM"
  4078. --------N-170B00-----------------------------
  4079. INT 17 - DOSISODE to WATTCP TSR Interface - "ioctl"
  4080.     AX = 0B00h
  4081.     DX = local identifier of socket (0 - 31)
  4082. Note:    this function sets the socket into non_block mode
  4083. SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  4084. --------P-170C-------------------------------
  4085. INT 17 U - Emulaser ELTSR - SET ??? FLAG
  4086.     AH = 0Ch
  4087.     ???
  4088. Return: ???
  4089. SeeAlso: AH=0Bh,INT 1A/AH=E5h
  4090. ----------170C-------------------------------
  4091. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  4092.     AH = 0Ch
  4093. SeeAlso: AH=0Bh"IBM",AH=0Dh"IBM"
  4094. --------N-170C00-----------------------------
  4095. INT 17 - DOSISODE to WATTCP TSR Interface - "close"
  4096.     AX = 0C00h
  4097. SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0D00h"DOSISODE"
  4098. --------P-170D-------------------------------
  4099. INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
  4100.     AH = 0Dh
  4101. Return: AX = state (0000h off, 0010h on)
  4102. Desc:    determine the actual state of ScrlLk even when Emulaser is controlling
  4103.       the ScrlLk light as its activity indicator
  4104. SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
  4105. ----------170D-------------------------------
  4106. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  4107.     AH = 0Dh
  4108. SeeAlso: AH=0Ch"IBM",AH=0Eh"IBM"
  4109. --------N-170D00-----------------------------
  4110. INT 17 - DOSISODE to WATTCP TSR Interface - "shutdown" - SHUTDOWN INTERFACE
  4111.     AX = 0D00h
  4112. Note:    this function is used to shutdown the interface
  4113. SeeAlso: AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
  4114. --------P-170E-------------------------------
  4115. INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
  4116.     AH = 0Eh
  4117. Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
  4118.       Vertisoft Systems, Inc.
  4119. Note:    this function is called by ELTSR on every INT 08 to allow data to be
  4120.       processed in the background, but may also be called by applications
  4121.       to give Emulaser additional CPU time
  4122. SeeAlso: AH=0Dh,INT 1A/AH=E5h
  4123. ----------170E-------------------------------
  4124. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  4125.     AH = 0Eh
  4126. SeeAlso: AH=03h"IBM",AH=0Dh"IBM",AH=80h"IBM"
  4127. --------N-170E00-----------------------------
  4128. INT 17 - DOSISODE to WATTCP TSR Interface - INSTALLATION CHECK
  4129.     AX = 0E00h
  4130. Return: CX = 1234h if installed
  4131. Program: DOSISODE is the ISO developers environment which has been ported to
  4132.       DOS and will run with the Waterloo TCP turned into a resident TSR.
  4133.       Currently it allows a maximum of 6 open sockets.
  4134. Note:    this function is used to check if the interface is loaded
  4135. SeeAlso: AX=0300h"DOSISODE",AX=0A00h"DOSISODE"
  4136. --------P-172000-----------------------------
  4137. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
  4138.     AX = 2000h
  4139.     BL = printer number???
  4140. Return: AX = status (see #00639)
  4141.     BX = driver version number (BH=major,BL=minor)
  4142.     CH = ??? (00h)
  4143.     CL = ???
  4144.     DX = ??? (0100h)
  4145. Note:    also enables the remaining printer driver functions (2001h-2007h)
  4146. SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
  4147.  
  4148. (Table 00639)
  4149. Values for PC Paint function status:
  4150.  0000h    successful
  4151.  0001h    invalid printer???
  4152.  0002h    ???
  4153.  0003h    invalid subfunction
  4154.  0005h    driver disabled, must call function 00h first
  4155.  0009h    unknown printer error
  4156.  000Bh    printer not selected
  4157.  000Ch    printer out of paper
  4158.  000Eh    error while writing to serial printer
  4159.  000Fh    ???
  4160.  0010h    invalid function number
  4161.  0011h    value out of range
  4162. --------P-172001-----------------------------
  4163. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
  4164.     AX = 2001h
  4165.     BL = printer number???
  4166. Return: AX = status (see #00639)
  4167. --------P-172002-----------------------------
  4168. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
  4169.     AX = 2002h
  4170.     BL = printer number???
  4171.     CL = desired information
  4172.         00h printer type
  4173.         Return: ES:DI -> ASCIZ printer name
  4174.         01h paper size
  4175.         DX = size index
  4176.         Return: ES:DI -> ASCIZ paper size description
  4177.         02h ???
  4178.         Return: BX = ???
  4179.         03h printer information???
  4180.         DX = ???
  4181.         ES:BX -> buffer for ??? (min 134 bytes)
  4182. Return: AX = status (see #00639)
  4183. SeeAlso: AX=2000h,AX=2004h
  4184. --------P-172003-----------------------------
  4185. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
  4186.     AX = 2003h
  4187.     ES:BX -> ???
  4188. Return: AX = status (see #00639)
  4189. SeeAlso: AX=2000h,AX=2004h
  4190. --------P-172004-----------------------------
  4191. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
  4192.     AX = 2004h
  4193.     BL = printer number???
  4194. Return: AX = status (see #00639)
  4195.     ES:DI -> ???
  4196. SeeAlso: AX=2000h,AX=2003h
  4197. --------P-172005-----------------------------
  4198. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
  4199.     AX = 2005h
  4200.     BL = printer number???
  4201. Return: AX = status (see #00639)
  4202. Note:    this function also clears the flag set by AX=2001h
  4203. SeeAlso: AX=2000h,AX=2001h,AX=2006h
  4204. --------P-172006-----------------------------
  4205. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
  4206.     AX = 2006h
  4207.     BL = printer number???
  4208. Return: AX = status (see #00639)
  4209. Note:    this function also clears the flag set by AX=2001h and disables
  4210.       functions other than AX=2000h
  4211. SeeAlso: AX=2000h,AX=2001h,AX=2005h
  4212. --------P-172007-----------------------------
  4213. INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
  4214.     AX = 2007h
  4215. Return: AX unchanged
  4216. SeeAlso: AX=2000h
  4217. --------N-172400-----------------------------
  4218. INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
  4219.     AX = 2400h
  4220.     DL = new state
  4221.         00h disabled
  4222.         01h enabled
  4223. Return: DL = 24h if installed
  4224.     DH = minor version number
  4225.     CX = network address of this machine
  4226.     AL = status (see #00640)
  4227. SeeAlso: AX=2403h,INT 16/AX=4500h
  4228.  
  4229. (Table 00640)
  4230. Values for NET.24 function status:
  4231.  00h    successful
  4232.  01h    timeout
  4233.  02h    header error
  4234.  03h    data error
  4235.  04h    busy
  4236.  05h    invalid parameters
  4237. --------N-172401-----------------------------
  4238. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
  4239.     AX = 2401h
  4240.     BL = timeout in clock ticks
  4241. Return: AL = status (see #00640)
  4242.     DX:BX -> receive buffer
  4243. SeeAlso: AX=2402h,AX=2404h,AX=2408h
  4244. --------N-172402-----------------------------
  4245. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
  4246.     AX = 2402h
  4247.     transmit buffer filled (see AX=2403h)
  4248. Return: AL = status (see #00640)
  4249. SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
  4250. --------N-172403-----------------------------
  4251. INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
  4252.     AX = 2403h
  4253. Return: AL = status (see #00640)
  4254.     CX = number of characters in receive ring buffer
  4255.     DX:BX -> transmit buffer
  4256. SeeAlso: AX=2400h,AX=2402h
  4257. --------N-172404-----------------------------
  4258. INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
  4259.     AX = 2404h
  4260.     BX = target address
  4261. Return: AL = status (see #00640)
  4262. SeeAlso: AX=2402h,AX=2405h
  4263. --------N-172405-----------------------------
  4264. INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
  4265.     AX = 2405h
  4266.     BX = target address
  4267. Return: AL = status (see #00640)
  4268. SeeAlso: AX=2402h,AX=2404h
  4269. --------N-172406-----------------------------
  4270. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
  4271.     AX = 2406h
  4272. Return: AL = status (see #00640)
  4273. SeeAlso: AX=2407h,AX=240Ah
  4274. --------N-172407-----------------------------
  4275. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
  4276.     AX = 2407h
  4277. Return: AL = status (see also #00640)
  4278.         06h end of data
  4279.     DL = received character
  4280. SeeAlso: AX=2406h
  4281. --------N-172408-----------------------------
  4282. INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
  4283.     AX = 2408h
  4284. Return: AL = status (see also #00640)
  4285.         06h end of data
  4286.     CX = number of bytes in receive buffer
  4287.     DX:SI -> receive buffer
  4288. SeeAlso: AX=2401h,AX=2405h,AX=2409h
  4289. --------N-172409-----------------------------
  4290. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
  4291.     AX = 2409h
  4292.     BX = target address
  4293.     CX = number of data bytes
  4294.     DL = command code to send
  4295.     DS:SI -> data bytes for command
  4296. Return: AL = status (see also #00640)
  4297.         03h no response
  4298.         06h remote currently unable to perform command
  4299. SeeAlso: AX=2405h,AX=2408h
  4300. --------N-17240A-----------------------------
  4301. INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
  4302.     AX = 240Ah
  4303. Return: AL = status (see #00640)
  4304. SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
  4305. --------N-17240B-----------------------------
  4306. INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
  4307.     AX = 240Bh
  4308.     DL = character to send
  4309. Return: AL = status (see also AX=2400h)
  4310.         03h transmission error
  4311.         06h write error
  4312. SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
  4313. --------N-17240C-----------------------------
  4314. INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
  4315.     AX = 240Ch
  4316. Return: AL = status (see also AX=2400h)
  4317.         03h transmission error
  4318.         06h remote breaks connection
  4319. SeeAlso: AX=240Ah,AX=240Bh
  4320. --------p-174B00-----------------------------
  4321. INT 17 - Brother P-Touch - INSTALLATION CHECK
  4322.     AX = 4B00h
  4323. Return:    AX = 4249h ('BI' = Brother International) if installed
  4324.         BX = program ID
  4325.         4550h ('EP') for "Epson FX-80 Emulator"
  4326.         5047h ('PG') for "Printer to Disk Utility"
  4327.         CX = numbero of parallel port being emulated or intercepted
  4328. SeeAlso: AX=4B01h
  4329. --------p-174B01-----------------------------
  4330. INT 17 - Brother P-Touch - UNINSTALL
  4331.     AX = 4B01h
  4332. Return: AX = segment of resident program or 0000h if unable to uninstall
  4333. Note:    the calling program must manually free both the indicated segment
  4334.       and the environment segment for the TSR with INT 21/AH=49h
  4335.       (the environment is pointed at by the WORD at AX:002Ch)
  4336. SeeAlso: AX=4B00h,INT 21/AH=49h
  4337. --------J-175000-----------------------------
  4338. INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
  4339.     AX = 5000h
  4340.     BX = country code
  4341.         0001h USA (English), 0051h Japan
  4342. Return: AL = status
  4343.         00h successful
  4344.         01h bad country code
  4345.         02h other error
  4346. SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
  4347. --------J-175001-----------------------------
  4348. INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
  4349.     AX = 5001h
  4350. Return: AL = status
  4351.         00h successful
  4352.         BX = country code
  4353.         02h error
  4354. SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
  4355. --------J-1751-------------------------------
  4356. INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
  4357.     AH = 51h
  4358.     DX = 2-byte JIS code
  4359. Return: DX = shift-JIS value or 0000h on error
  4360. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  4361.       characters to Shift-JIS characters, and the other performs the
  4362.       opposite conversion
  4363. SeeAlso: AX=5000h,AH=52h
  4364. --------J-1752-------------------------------
  4365. INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
  4366.     AH = 52h
  4367.     DX = 2-byte shift-JIS code
  4368. Return: DX = JIS code or 0000h on error
  4369. Note:    one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
  4370.       characters to Shift-JIS characters, and the other performs the
  4371.       opposite conversion
  4372. SeeAlso: AH=51h
  4373. --------V-1760-------------------------------
  4374. INT 17 - FLASHUP.COM - INSTALLATION CHECK
  4375.     AH = 60h
  4376. Return: AL = 60h
  4377.     DX = CS of resident code
  4378. Notes:    FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
  4379.     FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
  4380.       consisting of an 80h followed by the actual command
  4381. SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
  4382. --------V-1761-------------------------------
  4383. INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
  4384.     AH = 61h
  4385. Return: AL = 61h
  4386.     DX = CS of resident code
  4387. Note:    SPEEDSCR.COM is by The Software Bottling Co.
  4388. --------P-1762-------------------------------
  4389. INT 17 U - T2PS v1.0 - UNINSTALL
  4390.     AH = 62h
  4391. Return: nothing
  4392. SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
  4393. --------P-1763-------------------------------
  4394. INT 17 U - T2PS v1.0 - SET PARAMETERS
  4395.     AH = 63h
  4396.     ES:SI -> settings (see #00641)
  4397. Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
  4398.       Technologies
  4399. SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
  4400.  
  4401. Format of T2PS settings:
  4402. Offset    Size    Description    (Table 00641)
  4403.  00h    WORD    LPT port number (0=LPT1, etc.)
  4404.  02h    WORD    page heigh in points
  4405.  04h    WORD    page width in points
  4406.  06h    WORD    top margin in points
  4407.  08h    WORD    bottom margin in points
  4408.  0Ah    WORD    left margin in points
  4409.  0Ch    WORD    right margin in points
  4410.  0Eh    WORD    font size in points
  4411.  10h    WORD    tab size
  4412.  12h    WORD    timeout in clock ticks
  4413. --------P-1764-------------------------------
  4414. INT 17 U - T2PS v1.0 - GET PARAMETERS
  4415.     AH = 64h
  4416.     ES:SI -> buffer for settings (see #00641)
  4417. Return: ES:SI buffer filled
  4418. SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
  4419. --------b-176F00BX0000-----------------------
  4420. INT 17 - HP Vectra - EXTENDED BIOS - "F17_INQUIRE" - INSTALLATION CHECK
  4421.     AX = 6F00h
  4422.     BX = 0000h
  4423. Return: BX = 4850h ("HP") if HP Extended BIOS printer extensions available
  4424. SeeAlso: AX=6F02h,INT 14/AX=6F00h,INT 10/AX=6F00h,INT 14/AX=6F00h
  4425. SeeAlso: INT 33/AX=6F00h,INT 6F/AH=00h"HP Vectra"
  4426. --------b-176F02-----------------------------
  4427. INT 17 - HP Vectra - EXTENDED BIOS - "F17_PUT_BUFFER" - PRINT BUFFER
  4428.     AX = 6F02h
  4429.     CX = size of buffer in bytes
  4430.     DX = port number (0-3)
  4431.     ES:DI -> buffer containing characters to be printed
  4432. Return: AH = printer status (see #00631)
  4433.     CX = number of bytes successfully printed
  4434.     ---on error (AH bit 0 set)---
  4435.         ES:DI -> next byte to be sent
  4436.     ---if successful---
  4437.         ES:DI unchanged
  4438. SeeAlso: AH=00h,AX=6F00h,INT 14/AX=6F02h
  4439. ----------1780-------------------------------
  4440. INT 17 - IBM SurePath BIOS - Officially "Private" Function
  4441.     AH = 80h
  4442. SeeAlso: AH=03h"IBM",AH=0Bh"IBM"
  4443. --------N-1781-------------------------------
  4444. INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
  4445.     AH = 81h
  4446.     AL = 00h (NTNX compatibility mode)
  4447.     CL = number of jobs to cancel
  4448. Return: AL = status (see #00642)
  4449. Note:    this function cancels the last CL printouts for the current task
  4450. SeeAlso: AH=82h
  4451.  
  4452. (Table 00642)
  4453. Values for Alloy status:
  4454.  00h    success
  4455.  01h-7Fh warning
  4456.  80h    general failure
  4457.  81h    host overloaded (NTNX only)
  4458.  82h    module busy (NTNX only)
  4459.  83h    host busy (NTNX only)
  4460.  84h    re-entry flag set
  4461.  85h    invalid request
  4462.  86h    invalid printer
  4463.  87h    invalid process ID
  4464.  89h    access denied
  4465.  8Ah    option not available for given port type
  4466.  8Bh    option not available for given task type
  4467.  91h    printer busy
  4468.  C2h    file not found
  4469.  C3h    path not found
  4470.  C4h    file access failure
  4471. --------N-1782-------------------------------
  4472. INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
  4473.     AH = 82h
  4474.     AL = 00h (NTNX compatibility mode)
  4475. Return: AL = status (see #00642)
  4476. SeeAlso: AH=81h
  4477. --------N-1783-------------------------------
  4478. INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
  4479.     AH = 83h
  4480.     AL = mode
  4481.         00h NTNX compatibility
  4482.         CL = number of copies (max 99, default 1)
  4483.         02h MW386 v2+
  4484.         BX = logical device number
  4485.             00h-03h = LPT1-LPT4
  4486.             04h-07h = COM1-COM4
  4487.         CX = number of copies
  4488. Return: AL = status (see #00642)
  4489. Note:    in NTNX compatibility mode, this function only affects LPT1
  4490. --------N-1784-------------------------------
  4491. INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
  4492.     AH = 84h
  4493.     AL = mode
  4494.         00h NTNX compatibility
  4495.         02h MW386 v2+
  4496.         BX = logical device number
  4497.             00h-03h = LPT1-LPT4
  4498.             04h-07h = COM1-COM4
  4499. Note:    closes spool file and tells spooler to queue the print job (LPT1 only
  4500.       under MW386 in NTNX compatibility mode)
  4501. --------J-1784-------------------------------
  4502. INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
  4503.     AH = 84h
  4504.     AL = character
  4505.     DX = printer number
  4506. Return: AH = printer status (see #00631)
  4507. SeeAlso: AH=00h,AH=85h
  4508. --------J-1785-------------------------------
  4509. INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
  4510.     AH = 85h
  4511.     AL = new state (00h enabled, 01h disabled)
  4512. SeeAlso: AH=84h"AX"
  4513. --------N-1787-------------------------------
  4514. INT 17 - Alloy NTNX - SET INDOS POINTER
  4515.     AH = 87h
  4516.     AL = 00h
  4517.     CX:BX -> buffer for user-written printer drivers
  4518. Return: BX,CX destroyed
  4519. Note:    must be executed before the printer is enabled
  4520. SeeAlso: AH=8Ah
  4521. --------N-1788-------------------------------
  4522. INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
  4523.     AH = 88h
  4524.     AL = mode
  4525.         00h NTNX compatibility
  4526.         DX = NTNX printer number (see #00643)
  4527.         01h MW386
  4528.         DX = MW386 printer number
  4529. Return: AH = status (see #00642)
  4530. Note:    removes specified printer from the spooler's list of printers
  4531. SeeAlso: AH=89h,AH=8Bh
  4532.  
  4533. (Table 00643)
  4534. Values for Alloy NTNX printer number:
  4535.  00h    host LPT1
  4536.  01h    host LPT2
  4537.  02h    host LPT3
  4538.  03h    host LPT4
  4539.  04h    host COM1
  4540.  05h    host COM2
  4541.  06h    user's logical COM2
  4542.  07h    user's terminal AUX port
  4543.  08h    user's logical COM1 (MW386 only)
  4544. --------N-1789-------------------------------
  4545. INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
  4546.     AH = 89h
  4547.     AL = mode
  4548.         00h NTNX compatibility
  4549.         DX = NTNX printer number (see #00643)
  4550.         01h MW386
  4551.         DX = MW386 printer number
  4552. Return: AL = status (see #00642)
  4553. Note:    the specified printer is added to the spooler's list of available
  4554.       printers
  4555. SeeAlso: AH=88h,AH=8Bh
  4556. --------N-178A-------------------------------
  4557. INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
  4558.     AH = 8Ah
  4559.     ???
  4560. SeeAlso: AH=92h
  4561. --------N-178B-------------------------------
  4562. INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
  4563.     AH = 8Bh
  4564.     DS:DX -> ASCIZ printer name
  4565. Return: AL = status (see also AH=81h)
  4566.         00h successful
  4567.         DX = physical device number
  4568. SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
  4569. --------N-178C-------------------------------
  4570. INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
  4571.     AH = 8Ch
  4572.     DX = physical device number
  4573.     ES:DI -> 17-byte buffer for ASCIZ device name
  4574. Return: AL = status (see also AH=81h)
  4575.         00h successful
  4576.         ES:DI buffer filled
  4577. SeeAlso: AH=88h,AH=8Bh
  4578. --------N-178D-------------------------------
  4579. INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
  4580.     AH = 8Dh
  4581.     AL = 00h
  4582. Return: AL = status (see #00642)
  4583. Notes:    clears all buffers and resets spooler to boot-up values
  4584.     MW386 supports this function for compatibility only; it is a NOP
  4585. --------N-178E-------------------------------
  4586. INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
  4587.     AH = 8Eh
  4588.     AL = 00h
  4589. Return: CX:BX -> INT 28 entry point
  4590. SeeAlso: AH=8Fh
  4591. --------N-178F-------------------------------
  4592. INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
  4593.     AH = 8Fh
  4594.     AL = 00h
  4595. Return: CX:BX -> DOS intercept routine
  4596. SeeAlso: AH=8Eh
  4597. --------N-1790-------------------------------
  4598. INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
  4599.     AH = 90h
  4600.     AL = mode
  4601.         00h NTNX compatibility
  4602.         DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
  4603.         DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
  4604.         02h MW386 v2+
  4605.         BX = logical device number
  4606.             00h-03h = LPT1-LPT4
  4607.             04h-07h = COM1-COM4
  4608.     CX:SI -> ASCIZ pathname
  4609. Return: AL = status (see #00642)
  4610. Note:    in mode 00h, the file is always sent to logical LPT1
  4611. SeeAlso: AH=A0h
  4612. --------N-1791-------------------------------
  4613. INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
  4614.     AH = 91h
  4615.     AL = mode
  4616.         00h NTNX compatibility
  4617.         Return: CX = user number (00h = host)
  4618.             DX = currently selected printer number (00h-08h)
  4619.         01h MW386
  4620.         Return: CX = user number
  4621.             DX = physical dev number of currently selected printer
  4622.         02h MW386 v2+
  4623.         BX = logical device number
  4624.             00h-03h = LPT1-LPT4
  4625.             04h-07h = COM1-COM4
  4626.         Return: CX = user number
  4627.             DX = physical device number
  4628. Return: AL = status (see #00642)
  4629. SeeAlso: AH=8Ch
  4630. --------N-1792-------------------------------
  4631. INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
  4632.     AH = 92h
  4633.     AL = 00h
  4634.     CL = 00h
  4635. Return: CL = driver state
  4636.         01h initialized
  4637.         80h not initialized
  4638.     AX = status (see #00642)
  4639. SeeAlso: AH=8Ah
  4640. --------N-1794-------------------------------
  4641. INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
  4642.     AH = 94h
  4643.     AL = mode
  4644.         00h NTNX compatibility
  4645.         DX = NTNX printer number (see #00643)
  4646.         01h MW386
  4647.         DX = MW386 printer number
  4648.         02h MW386 v2+
  4649.         BX = logical printer number
  4650.         DX = MW386 printer number
  4651. Return: AL = status (see #00642)
  4652. Note:    modes 00h and 01h affect only logical LPT1
  4653. SeeAlso: AH=8Bh,AH=95h
  4654. --------N-1795-------------------------------
  4655. INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
  4656.     AH = 95h
  4657.     AL = mode
  4658.         00h NTNX compatibility
  4659.         Return: DX = NTNX printer number (see #00643)
  4660.                 (FFFFh if current printer not compatible with NTNX)
  4661.         01h MW386
  4662.         Return: DX = MW386 printer number
  4663.         02h MW386 v2+
  4664.         BX = logical device number
  4665.             00h-03h = LPT1-LPT4
  4666.             04h-07h = COM1-COM4
  4667.         Return: DX = MW386 printer number (FFFFh = none)
  4668. Return: AL = status (see #00642)
  4669. Note:    modes 00h and 01h return the printer number of logical LPT1 only
  4670. SeeAlso: AH=94h
  4671. --------N-1796-------------------------------
  4672. INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
  4673.     AH = 96h
  4674.     AL = 00h
  4675. Note:    documentation states that this is a NOP, doing only XOR AX,AX before
  4676.       returning
  4677. SeeAlso: INT 14/AH=24h
  4678. --------N-1797-------------------------------
  4679. INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
  4680.     AH = 97h
  4681.     AL = mode
  4682.         00h NTNX compatibility
  4683.         02h MW386 v2+
  4684.         BX = logical device number
  4685.             00h-03h = LPT1-LPT4
  4686.             04h-07h = COM1-COM4
  4687.     CH,CL,DH = three character break sequence
  4688.     DL = subfunction
  4689.         00h set break string
  4690.         else reset break
  4691. Return: AL = status (see #00642)
  4692. Notes:    mode 00h affects only logical LPT1
  4693.     when the break string is encountered, the spool file will be closed and
  4694.       queued for printing automatically
  4695.     the break string is not permanently saved, and will be reset each time
  4696.       MW386 or the user is rebooted
  4697. SeeAlso: AH=9Bh
  4698. --------N-1798-------------------------------
  4699. INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
  4700.     AH = 98h
  4701.     AL = 00h
  4702.     DL = printer number (FFh=current)
  4703. Return: AL = status
  4704.         00h successful
  4705.         01h incorrect printer
  4706.         02h task not found
  4707. Note:    MW386 supports this function for compatibility only; it is a NOP
  4708. --------N-1799-------------------------------
  4709. INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
  4710.     AH = 99h
  4711.     AL = mode
  4712.         00h NTNX compatibility
  4713.         DL = NTNX printer number (see #00643)
  4714.             (FFh = task's current logical LPT1)
  4715.         DH = mode (see #00644)
  4716.         01h MW386
  4717.         DX = MW386 printer number
  4718.         CL = mode (as for DH above)
  4719. Return: AL = status (see #00642)
  4720.     DH = mode (bits 1 and 2 set as above)
  4721.     DL = printer owner's user number if not spooled
  4722.  
  4723. Bitfields for Alloy printer mode:
  4724.  0    get mode if 1, set mode if 0    (Table 00644)
  4725.  1    private ("attached")
  4726.  2    direct instead of spooled
  4727.  3-7    reserved (0)
  4728. --------N-179A-------------------------------
  4729. INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
  4730.     AH = 9Ah
  4731.     AL = mode
  4732.         00h NTNX compatibility
  4733.         DX = NTNX printer number (see #00643)
  4734.             (FFFFh = current logical LPT1)
  4735.         01h MW386
  4736.         DX = MW386 printer number
  4737.     CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
  4738. Return: AL = status (see #00642)
  4739. Note:    beginning with MW386 v2.0, tab expansion is set on a per-printer basis
  4740.       rather than a per-user basis; NTNX and MW386 v1.x ignore DX
  4741. SeeAlso: AH=A4h
  4742. --------N-179B-------------------------------
  4743. INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
  4744.     AH = 9Bh
  4745.     AL = mode
  4746.         00h NTNX compatibility
  4747.         CX = timeout value in clock ticks (1/18 sec) (00h = never)
  4748.         01h MW386
  4749.         CX = timeout value in seconds (00h = never)
  4750.         02h MW386 v2+
  4751.         BX = logical device number
  4752.             00h-03h = LPT1-LPT4
  4753.             04h-07h = COM1-COM4
  4754.         CX = timeout value in seconds (00h = never)
  4755. Return: AL = status (see #00642)
  4756. Notes:    modes 00h and 01h affect only the current logical LPT1
  4757.     if no data is sent to a printer for the specified amount of time, the
  4758.       spool file will be closed and queued for printing automatically
  4759. SeeAlso: AH=97h
  4760. --------N-17A0-------------------------------
  4761. INT 17 - Alloy MW386 - SPOOL COPY OF FILE
  4762.     AH = A0h
  4763.     AL = mode
  4764.         00h NTNX compatibility
  4765.         DX = ??? (NTNX, MW386 v1.x only)
  4766.         02h MW386 v2+
  4767.         BX = logical device number
  4768.             00h-03h = LPT1-LPT4
  4769.             04h-07h = COM1-COM4
  4770.     CX:SI -> ASCIZ pathname
  4771. Return: AL = status (see #00642)
  4772. Notes:    makes a copy of the specified file in the spooler's directory, allowing
  4773.       the original file to be modified or deleted while the copy is printed
  4774.     in mode 00h, the file is printed on logical LPT1
  4775. SeeAlso: AH=90h
  4776. --------N-17A4-------------------------------
  4777. INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
  4778.     AH = A4h
  4779.     AL = new state
  4780.         00h form feed after end of print job disabled
  4781.         01h form feed enabled
  4782. Return: AL = status (see #00642)
  4783. Note:    only affects the current logical LPT1
  4784. SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
  4785. --------N-17A6-------------------------------
  4786. INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
  4787.     AH = A6h
  4788.     AL = new state
  4789.         00h banner page before print job disabled
  4790.         01h banner page enabled
  4791. Return: AL = status (see #00642)
  4792. Note:    only affects the current logical LPT1
  4793. SeeAlso: AH=A4h
  4794. --------N-17A7-------------------------------
  4795. INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
  4796.     AH = A7h
  4797.     AL = spool flags (see #00645)
  4798.     BX = logical device number
  4799.         00h-03h = LPT1-LPT4
  4800.         04h-07h = COM1-COM4
  4801. Return: AL = status (see #00642)
  4802. Note:    the documentation does not state which register contains the result of
  4803.       a GET
  4804. SeeAlso: AH=A4h,AH=A6h
  4805.  
  4806. Bitfields for Alloy spool flags:
  4807. Bit(s)    Description    (Table 00645)
  4808.  0    banner page enabled (see AH=A6h)
  4809.  1    form feed enabled (see AH=A4h)
  4810.  2-6    reserved (0)
  4811.  7    set flags if 1, get flags if 0
  4812. --------N-17A8-------------------------------
  4813. INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
  4814.     AH = A8h
  4815.     CX:SI -> ASCIZ filename without extension (max 8 chars)
  4816. Return: AL = status (see #00642)
  4817. Note:    allows application to specify banner page filename for spool files
  4818.       collected from the application's printer output
  4819. SeeAlso: AH=A9h
  4820. --------N-17A9-------------------------------
  4821. INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
  4822.     AH = A9h
  4823.     AL = new spool drive (2=C:,3=D:,etc)
  4824. Return: AL = status (see #00642)
  4825. Note:    does not remove previous spooling directory since jobs may be pending
  4826. SeeAlso: AH=A8h
  4827. --------N-17AA-------------------------------
  4828. INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
  4829.     AH = AAh
  4830.     AL = mode
  4831.         00h NTNX
  4832.         DX = NTNX printer number (see #00643)
  4833.         01h MW386
  4834.         DX = MW386 printer number
  4835. Return: AH = instantaneous printer status
  4836.         00h printer ready
  4837.         01h not ready
  4838.         12h off line
  4839.         13h out of paper
  4840.         14h general device failure
  4841.         15h device timeout
  4842.         16h bad device number
  4843. --------N-17AF-------------------------------
  4844. INT 17 - Alloy MW386 - CHECK SPOOLER
  4845.     AH = AFh
  4846. Return: AX = 55AAh if spooler available
  4847. --------c-17C0-------------------------------
  4848. INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
  4849.     AH = C0h
  4850.     DX = printer port (0-3)
  4851. Return: ES:BX -> control block (see #00646)
  4852. SeeAlso: AH=C1h
  4853.  
  4854. Format of PCSpool control block:
  4855. Offset    Size    Description    (Table 00646)
  4856.  00h    WORD    printer number
  4857.  02h    WORD    address of printer status port
  4858.  04h    WORD    number of first record in queue
  4859.  06h    WORD    number of last record in queue
  4860.  08h    DWORD    characters already printed
  4861.  0Ch    DWORD    number of characters remaining
  4862.  10h    DWORD    pointer to dequeue buffer
  4863.  14h    DWORD    previous count of characters printed
  4864.  18h    DWORD    number of clock ticks taken to print them
  4865.  1Ch    WORD    offset of next character to output
  4866.  1Eh    WORD    offset of next character to print
  4867.  20h    WORD    pointer to spooling queue record
  4868.  22h    BYTE    current spooling status
  4869.  23h    BYTE    current printer status:
  4870.         00h OK
  4871.         01h not ready
  4872.         02h paused with message
  4873.         03h paused
  4874.         04h initializing
  4875.         FEh non-existent port
  4876.         FFh not spooled
  4877.  24h    BYTE    current control record type
  4878.  25h    WORD    observed printer speed
  4879.  27h    WORD    characters to print per service
  4880.  29h    BYTE    01h if disk write needed
  4881.  2Ah    BYTE    01h if queued data should be flushed
  4882.  2Bh    BYTE    01h to update cps status
  4883. --------c-17C1--------------------------------
  4884. INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
  4885.     AH = C1h
  4886.     DX = printer port (0-3)
  4887.     DS:SI -> ASCIZ string to save for display
  4888. Note:    flushes pending writes
  4889. SeeAlso: AH=C0h,AH=C2h
  4890. --------c-17C2-------------------------------
  4891. INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
  4892.     AH = C2h
  4893.     DX = printer port (0-3)
  4894. SeeAlso: AH=C3h
  4895. --------c-17C3-------------------------------
  4896. INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
  4897.     AH = C3h
  4898.     DX = printer port (0-3)
  4899. SeeAlso: AH=C2h,AH=C7h
  4900. --------c-17C4-------------------------------
  4901. INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
  4902.     AH = C4h
  4903. Return: DI = B0BFh
  4904.     SI = segment
  4905. --------c-17C5-------------------------------
  4906. INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
  4907.     AH = C5h
  4908.     DX = printer port (0-3)
  4909. Note:    cancels up to the pause record
  4910. --------c-17C6-------------------------------
  4911. INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
  4912.     AH = C6h
  4913.     DX = printer port (0-3)
  4914. Return: AX = queue status
  4915.        0000h printer not active or at pause
  4916.        0001h printer busy
  4917. --------c-17C7-------------------------------
  4918. INT 17 - PC Magazine PCSpool - CLOSE QUEUE
  4919.     AH = C7h
  4920.     DX = printer port (0-3)
  4921. SeeAlso: AH=C3h
  4922. --------P-17CD00-----------------------------
  4923. INT 17 - INSET - EXECUTE COMMAND STRING
  4924.     AX = CD00h
  4925.     DS:DX -> ASCIZ command string (max 80 bytes)
  4926. Return: CX = 07C2h (1986d)
  4927. Note:    user interface menus pop up after last command, unless that command
  4928.     exits INSET
  4929. --------P-17CD01-----------------------------
  4930. INT 17 - INSET - GET IMAGE SIZE
  4931.     AX = CD01h
  4932.     DS:DX -> ASCIZ name of image file
  4933. Return: AX = height in 1/720th inch
  4934.     BX = width in 1/720th inch
  4935.     CX = 07C2h (1986d)
  4936. --------P-17CD02-----------------------------
  4937. INT 17 - INSET - INITIALIZE
  4938.     AX = CD02h
  4939. Return: CX = 07C2h (1986d)
  4940. Note:    all open files are closed and the printer is reset
  4941. SeeAlso: AX=CD04h
  4942. --------P-17CD03-----------------------------
  4943. INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
  4944.     AX = CD03h
  4945. Return: CX = 07C2h (1986d)
  4946. --------P-17CD04-----------------------------
  4947. INT 17 - INSET - INITIALIZE LINKED MODE
  4948.     AX = CD04h
  4949.     ES:SI -> FAR routine for linked mode (see #00647)
  4950. Return: CX = 07C2h
  4951. SeeAlso: AX=CD02h,AX=CD08h
  4952.  
  4953. (Table 00647)
  4954. Values INSET linked-mode routine is called with:
  4955.     AL = function
  4956.         00h send character to printer
  4957.         BL = character to send
  4958.         01h send string to printer
  4959.         CX = number of bytes to send
  4960.         DS:DX -> buffer containing data
  4961.         02h move print head to horizontal starting position of image
  4962. Return: AX = status
  4963.         0000h success
  4964.         0001h failure
  4965. --------P-17CD05-----------------------------
  4966. INT 17 - INSET - START MERGING IMAGE INTO TEXT
  4967.     AX = CD05h
  4968.     DS:DX -> ASCIZ name of PIX file
  4969.     CX = left margin of text in 1/720th inch
  4970. Return: AH = printer type
  4971.         00h page-oriented (multiple images may be placed side-by-side)
  4972.         01h line-oriented (use AX=CD06h for vertical paper movement)
  4973.     CX = 07C2h (1986d)
  4974. SeeAlso: AX=CD07h
  4975. --------P-17CD06-----------------------------
  4976. INT 17 - INSET - GRAPHICS LINE FEED
  4977.     AX = CD06h
  4978. Return: AH = completion status
  4979.         00h image complete
  4980.         01h image incomplete
  4981.     CX = 07C2h (1986d)
  4982. SeeAlso: AX=CD09h
  4983. --------P-17CD07-----------------------------
  4984. INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
  4985.     AX = CD07h
  4986. Return: CX = 07C2h
  4987. SeeAlso: AX=CD05h
  4988. --------P-17CD08-----------------------------
  4989. INT 17 - INSET - CANCEL LINK MODE
  4990.     AX = CD08h
  4991. Return: CX = 07C2h
  4992. SeeAlso: AX=CD04h
  4993. --------P-17CD09-----------------------------
  4994. INT 17 - INSET - ALTER TEXT LINE SPACING
  4995.     AX = CD09h
  4996.     CX = line spacing in 1/720th inch
  4997. Return: CX = 07C2h
  4998. Note:    not yet implemented, line spacing is currently fixed at 1/6 inch
  4999. SeeAlso: AX=CD06h
  5000. --------P-17CD0A-----------------------------
  5001. INT 17 - INSET - GET SETUP
  5002.     AX = CD0Ah
  5003.     DS:DX -> buffer for IN.SET data
  5004. Return: CX = 07C2h
  5005. --------P-17CD0B-----------------------------
  5006. INT 17 - INSET - START GETTING SCALED IMAGE
  5007.     AX = CD0Bh
  5008.     DS:SI -> ASCIZ pathname of .PIX file
  5009.     BX = number of bitplanes
  5010.     CX = number of rows in output bitmap
  5011.     DX = number of columns in output bitmap
  5012. Return: AX = status
  5013.         0000h OK
  5014.         FFFFh error
  5015. Note:    image is returned in strips by repeated calls to AX=CD0Ch
  5016. --------P-17CD0C-----------------------------
  5017. INT 17 - INSET - GET NEXT IMAGE STRIP
  5018.     AX = CD0Ch
  5019. Return: AX = status
  5020.         0000h OK but not complete
  5021.         0001h OK and image complete
  5022.         FFFFh error
  5023.     DS:SI -> buffer (max 4K) for bit map strip
  5024.     CX = start row
  5025.     DX = number of rows
  5026.     BX = offset in bytes between bit planes
  5027. Note:    buffer may be overwritten by subsequent calls
  5028. SeeAlso: AX=CD0Bh
  5029. --------P-17E0-------------------------------
  5030. INT 17 - EPP BIOS - INSTALLATION CHECK
  5031.     AH = E0h
  5032. Return: ??? (AH <> E0h if installed ???)
  5033. SeeAlso: AX=0200h"EPP",AH=E1h,AH=E2h
  5034. --------P-17E1-------------------------------
  5035. INT 17 - EPP BIOS - DISABLE EPP
  5036.     AH = E1h
  5037.     ???
  5038. Return: ???
  5039. SeeAlso: AX=0200h"EPP",AH=E0h,AH=E2h
  5040. --------P-17E2-------------------------------
  5041. INT 17 - EPP BIOS - ENABLE EPP
  5042.     AH = E2h
  5043.     ???
  5044. Return: ???
  5045. SeeAlso: AX=0200h"EPP",AH=E0h,AH=E1h
  5046. --------P-17F0-------------------------------
  5047. INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
  5048.     AH = F0h
  5049.     DX = printer port (0-3)
  5050. Return: AX = 0001h Jetstream present
  5051.          else  non-Jetstream port
  5052. Note:    NorthNet Jetstream is a high-performance DMA-driven parallel card able
  5053.       to drive printers at up to 80000 characters per second
  5054. --------P-17F1-------------------------------
  5055. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
  5056.     AH = F1h
  5057.     CX = data buffer length
  5058.     DX = printer port (0-3)
  5059.     DS:SI -> data buffer
  5060. Return: AX = status
  5061.         0000h printer not ready (see also AH=02h)
  5062.         other printing started
  5063. SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
  5064. --------P-17F2-------------------------------
  5065. INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
  5066.     AH = F2h
  5067.     DX = printer port (0-3)
  5068. Return: AX = status
  5069.         0000h prior print request finished
  5070.         other number of characters left to print
  5071. SeeAlso: AH=02h,AH=F1h,AH=F3h
  5072. --------P-17F3-------------------------------
  5073. INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
  5074.     AH = F3h
  5075.     DX = printer port (0-3)
  5076. Return: AX = number of unprinted characters due to abort
  5077. SeeAlso: AH=F1h,AH=F4h
  5078. --------P-17F4-------------------------------
  5079. INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
  5080.     AH = F4h
  5081.     DX = printer port (0-3)
  5082.     DS:DS -> FAR post address (called with interrupts on)
  5083. SeeAlso: AH=F1h,AH=F3h
  5084. --------P-17F5-------------------------------
  5085. INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
  5086.     AH = F5h
  5087.     CX = data buffer length
  5088.     DX = printer port (0-3)
  5089.     DS:SI -> data buffer (32-bit physical address)
  5090. Return: AX = status
  5091.         0000h printer not ready (see also AH=02h)
  5092.         other printing started
  5093. SeeAlso: AH=F1h
  5094. --------c-17FF--BX0000-----------------------
  5095. INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
  5096.     AH = FFh
  5097.     BX = 0000h
  5098.     CX = 0000h
  5099.     DX = printer port number
  5100. Return: AH = printer status (see #00631 at AH=00h)
  5101. Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
  5102.       operating system by The Software Link, Inc.
  5103. Desc:    close the spool file immediately instead of waiting for the close time
  5104.       to elapse
  5105. SeeAlso: AH=01h,AH=03h"PC-MOS"
  5106. --------B-18---------------------------------
  5107. INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
  5108. Desc:    called when there is no bootable disk available to the system
  5109. Notes:    only PCs produced by IBM contain BASIC in ROM, so the action is
  5110.       unpredictable on compatibles; this interrupt often reboots the
  5111.       system, and often has no effect at all
  5112.     network cards with their own BIOS can hook this interrupt to allow
  5113.       a diskless boot off the network (even when a hard disk is present
  5114.       if none of the partitions is marked as the boot partition)
  5115. SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS"
  5116. --------J-1800-------------------------------
  5117. INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
  5118.     AH = 00h
  5119. Return: AX = keystroke
  5120. SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
  5121. --------J-1801-------------------------------
  5122. INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
  5123.     AH = 01h
  5124. Return: BH = status
  5125.         00h no keystrokes available
  5126.         01h keystroke available
  5127.         AX = keystroke
  5128. SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
  5129. --------J-1802-------------------------------
  5130. INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
  5131.     AH = 02h
  5132. Return: AL = shift flags
  5133. SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
  5134. --------J-1803-------------------------------
  5135. INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
  5136.     AH = 03h
  5137.     ???
  5138. Return: ???
  5139. SeeAlso: AH=00h,AH=04h
  5140. --------J-1804-------------------------------
  5141. INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
  5142.     AH = 04h
  5143.     ???
  5144. Return: ???
  5145. Note:    details are not available at this time
  5146. SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
  5147. --------J-18---------------------------------
  5148. INT 18 - NEC PC-9800 series - VIDEO
  5149.     AH = function
  5150.         0Ah set video mode
  5151.         0Bh get video mode
  5152.         0Ch start text screen display
  5153.         0Dh end text screen display
  5154.         0Eh set single display area
  5155.         0Fh set multiple display area
  5156.         10h set cursor shape
  5157.         11h display cursor
  5158.         12h terminate cursor
  5159.         13h set cursor position
  5160.         14h read font patter
  5161.         16h initialize text video RAM
  5162.         1Ah define user character
  5163.         others
  5164.     ???
  5165. Return: ???
  5166. Notes:    details are not available at this time
  5167.     text video RAM is located at segments A000h (characters) and A200h
  5168.       (attributes), graphics video RAM at segment C000h
  5169.  
  5170. Bitfields for NEC PC-9800 series video attributes:
  5171. Bit(s)    Description    (Table 00648)
  5172.  0    disable drawing character
  5173.  1    blinking
  5174.  2    reverse video
  5175.  3    underline
  5176.  4    vertical line
  5177.  7-5    color
  5178.     (0=black, 1=blue, 2=red, 3=purple, 4=green, 5=cyan, 6=yellow, 7=white)
  5179. --------J-180E-------------------------------
  5180. INT 18 - NEC PC-9800 series - SET SINGLE DISPLAY AREA
  5181.     AH = 0Eh
  5182.     DX = offset of first byte to display???
  5183. Return: ???
  5184. SeeAlso: AH=1Bh,MEM 0050h:0001h
  5185. --------J-181B-------------------------------
  5186. INT 18 - NEC PC-9800 series - SET DISPLAY MODE
  5187.     AH = 1Bh
  5188.     AL = ??? (00h for text mode)
  5189. Return: ???
  5190. --------r-185350BX4849-----------------------
  5191. INT 18 - SPHINX C-- - WB.COM - API
  5192.     AX = 5350h ('SP')
  5193.     BX = 4849h ('HI')
  5194.     CX = 4E58h ('NX')
  5195.     DH = function
  5196.         01h set ???
  5197.         DL = ???
  5198.         02h get ???
  5199.         Return: DL = ???
  5200.         03h get ???
  5201.         Return: ES:DI -> ??? data buffer
  5202.         06h ???
  5203. Return: AX = 7370h ('sp') if installed
  5204.     BX = 6869h ('hi') if installed
  5205.     CX = 6E78h ('nx') if installed
  5206. Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
  5207.       which is a cross between C and assembler; WB.COM is the driver which
  5208.       launches the WorkBench
  5209. --------s-186900-----------------------------
  5210. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
  5211.     AX = 6900h
  5212. Return: AX = amount of DRAM on card or 0000h if GUS not available
  5213. Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
  5214.       and then shells out the the program requiring its services
  5215. SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
  5216. --------s-186901-----------------------------
  5217. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
  5218.     AX = 6901h
  5219.     BX = number of active voices (14-32)
  5220. Return: nothing
  5221. SeeAlso: AX=6900h
  5222. --------s-186902-----------------------------
  5223. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
  5224.     AX = 6902h
  5225.     BX = voice number (00h-1Fh)
  5226.     CX = linear volume (0000h-01FFh)
  5227. Return: nothing
  5228. SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
  5229. --------s-186903-----------------------------
  5230. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
  5231.     AX = 6903h
  5232.     BX = voice number (00h-1Fh)
  5233.     CX = frequency in Hz (0-44100)
  5234. Return: nothing
  5235. SeeAlso: AX=6902h,AX=6904h
  5236. --------s-186904-----------------------------
  5237. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
  5238.     AX = 6904h
  5239.     BX = voice number (00h-1Fh)
  5240.     CX = balance (0 = left, 7 = even, 15 = right)
  5241. Return: nothing
  5242. SeeAlso: AX=6902h,AX=6903h
  5243. --------s-186905-----------------------------
  5244. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
  5245.     AX = 6905h
  5246.     BL = voice number
  5247.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  5248.     CL = looping type (0 = none, 1 = forward, 2 = back and forth)
  5249.     CH:DI = 20-bit starting address for voice data
  5250.     DL:SI = 20-bit address for loop start
  5251.     DH:BP = 20-bit address for loop end
  5252. SeeAlso: AX=6903h,AX=6906h,AX=690Bh
  5253. --------s-186906-----------------------------
  5254. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
  5255.     AX = 6906h
  5256.     BL = data format (1 = twos-complement, 0 = not)
  5257.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  5258.     CX = number of bytes to send
  5259.     ES:SI -> buffer containing data
  5260.     DL:DI = 20-bit address of GUS DRAM at which to load sound data
  5261. SeeAlso: AX=6900h,AX=6905h,AX=690Ch
  5262. --------s-186907-----------------------------
  5263. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
  5264.     AX = 6907h
  5265.     BX = voice number (00h-1Fh)
  5266. Return: nothing
  5267. SeeAlso: AX=6908h,AX=690Dh
  5268. --------s-186908-----------------------------
  5269. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
  5270.     AX = 6908h
  5271.     BX = voice number (00h-1Fh)
  5272.     CL:DX = 20-bit ending address
  5273. Return: nothing
  5274. SeeAlso: AX=690Bh
  5275. --------s-186909-----------------------------
  5276. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
  5277.     AX = 6909h
  5278.     BL = voice number (00h-1Fh)
  5279.     BH = looping type (0 = none, 1 = forward, 2 = back and forth)
  5280.     CX = starting volume
  5281.     DX = ending volume
  5282.     DI:SI = time
  5283. Return: nothing
  5284. SeeAlso: AX=6902h,AX=690Ah
  5285. --------s-18690A-----------------------------
  5286. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
  5287.     AX = 690Ah
  5288.     BX = voice number (00h-1Fh)
  5289. Return: AX = current non-linear volume for voice
  5290. SeeAlso: AX=6902h,AX=6909h
  5291. --------s-18690B-----------------------------
  5292. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
  5293.     AX = 690Bh
  5294.     BX = voice number
  5295. Return: BX:AX = 20-bit address at which voice is playing
  5296. SeeAlso: AX=6900h,AX=6905h,AX=6908h
  5297. --------s-18690C-----------------------------
  5298. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
  5299.     AX = 690Ch
  5300.     BL = data format (1 = twos-complement, 0 = not)
  5301.     BH = sample type (0 = 8-bit, 1 = 16-bit)
  5302.     CX = number of bytes to get
  5303.     ES:SI -> buffer for retrieved data
  5304.     DL:DI = 20-bit address in GUS DRAM from which to read voice data
  5305. Return: nothing
  5306. SeeAlso: AX=6906h
  5307. --------s-18690D-----------------------------
  5308. INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
  5309.     AX = 690Dh
  5310.     BX = voice
  5311.     CX = sample type (0 = 8-bit, 1 = 16-bit)
  5312.     DX = looping type (0 = none, 1 = forward, 2 = back and forth)
  5313. Return: CX = balance value
  5314. SeeAlso: AX=6907h,AX=6908h
  5315. --------s-188000-----------------------------
  5316. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
  5317.     AX = 8000h
  5318. Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
  5319.       INT 18h and then shells out to the program requiring its services
  5320. SeeAlso: AX=8001h,AX=8004h
  5321. --------s-188001-----------------------------
  5322. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
  5323.     AX = 8001h
  5324.     BX:CX -> ASCIZ filename
  5325. SeeAlso: AX=8000h,AX=8002h
  5326. --------s-188002-----------------------------
  5327. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
  5328.     AX = 8002h
  5329. SeeAlso: AX=8002h,AX=8003h
  5330. --------s-188003-----------------------------
  5331. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
  5332.     AX = 8003h
  5333. --------s-188004-----------------------------
  5334. INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
  5335.     AX = 8004h
  5336. SeeAlso: AX=8000h,AX=8003h
  5337. --------B-19---------------------------------
  5338. INT 19 - SYSTEM - BOOTSTRAP LOADER
  5339. Desc:    This interrupt reboots the system without clearing memory or restoring
  5340.       interrupt vectors.  Because interrupt vectors are preserved, this
  5341.       interrupt usually causes a system hang if any TSRs have hooked
  5342.       vectors from 00h through 1Ch, particularly INT 08.
  5343. Notes:    Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
  5344.       A: to 0000h:7C00h.  If this fails, and a hard disk is installed, the
  5345.       BIOS will read sector 1, head 0, track 0 of the first hard disk.
  5346.       This sector should contain a master bootstrap loader and a partition
  5347.       table (see #00650).  After loading the master boot sector at
  5348.       0000h:7C00h, the master bootstrap loader is given control
  5349.       (see #00653).    It will scan the partition table for an active
  5350.       partition, and will then load the operating system's bootstrap
  5351.       loader (contained in the first sector of the active partition) and
  5352.       give it control.
  5353.     true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
  5354.       disk have a valid boot sector
  5355.     to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
  5356.       0040h:0072h and jump to FFFFh:0000h.    For a cold boot equivalent to
  5357.       a reset, store 0000h at 0040h:0072h before jumping.
  5358.     VDISK.SYS hooks this interrupt to allow applications to find out how
  5359.       much extended memory has been used by VDISKs (see #00649).  DOS 3.3+
  5360.       PRINT hooks INT 19 but does not set up a correct VDISK header block
  5361.       at the beginning of its INT 19 handler segment, thus causing some
  5362.       programs to overwrite extended memory which is already in use.
  5363.     the default handler is at F000h:E6F2h for 100% compatible BIOSes
  5364.     MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
  5365.       contains extended partitions which point at each other in a loop,
  5366.       since it will never find the end of the linked list of extended
  5367.       partitions
  5368.     under Windows Real and Enhanced modes, calling INT 19 will hang the
  5369.       system in the same was as under bare DOS; under Windows Standard
  5370.       mode, INT 19 will successfully perform a cold reboot as it appears
  5371.       to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
  5372. BUG:    when loading the remainder of the DOS system files fails, various
  5373.       versions of IBMBIO.COM/IO.SYS incorrectly restore INT 1E before
  5374.       calling INT 19, assuming that the boot sector had stored the
  5375.       contents of INT 1E at DS:SI instead of on the stack as it actually
  5376.       does
  5377. SeeAlso: INT 14/AH=17h,INT 18"BOOT HOOK",INT 49"Tandy 2000",INT 5B"PC Cluster"
  5378. SeeAlso: MEM 0040h:0067h,MEM F000h:FFF0h,CMOS 0Fh
  5379.  
  5380. Format of VDISK header block (at beginning of INT 19 handler's segment):
  5381. Offset    Size    Description    (Table 00649)
  5382.  00h 18 BYTEs    n/a (for VDISK.SYS, the device driver header)
  5383.  12h 11 BYTEs    signature string "VDISK     Vn.m" for VDISK.SYS version n.m
  5384.  1Dh 15 BYTEs    n/a
  5385.  2Ch  3 BYTEs    linear address of first byte of available extended memory
  5386.  
  5387. Format of hard disk master boot sector:
  5388. Offset    Size    Description    (Table 00650)
  5389.  00h 446 BYTEs    Master bootstrap loader code
  5390. 1BEh 16 BYTEs    partition record for partition 1 (see #00651)
  5391. 1CEh 16 BYTEs    partition record for partition 2
  5392. 1DEh 16 BYTEs    partition record for partition 3
  5393. 1EEh 16 BYTEs    partition record for partition 4
  5394. 1FEh    WORD    signature, AA55h indicates valid boot block
  5395.  
  5396. Format of partition record:
  5397. Offset    Size    Description    (Table 00651)
  5398.  00h    BYTE    boot indicator (80h = active partition)
  5399.  01h    BYTE    partition start head
  5400.  02h    BYTE    partition start sector (bits 0-5)
  5401.  03h    BYTE    partition start track (bits 8,9 in bits 6,7 of sector)
  5402.  04h    BYTE    operating system indicator (see #00652)
  5403.  05h    BYTE    partition end head
  5404.  06h    BYTE    partition end sector (bits 0-5)
  5405.  07h    BYTE    partition end track (bits 8,9 in bits 6,7 of sector)
  5406.  08h    DWORD    sectors preceding partition
  5407.  0Ch    DWORD    length of partition in sectors
  5408. SeeAlso: #00650
  5409.  
  5410. (Table 00652)
  5411. Values for operating system indicator:
  5412.  00h    empty partition-table entry
  5413.  01h    DOS 12-bit FAT
  5414.  02h    XENIX root file system
  5415.  03h    XENIX /usr file system (obsolete)
  5416.  04h    DOS 16-bit FAT (up to 32M)
  5417.  05h    DOS 3.3+ extended partition
  5418.  06h    DOS 3.31+ Large File System (16-bit FAT, over 32M)
  5419.  07h    QNX
  5420.  07h    OS/2 HPFS
  5421.  07h    Windows NT NTFS
  5422.  07h    Advanced Unix
  5423.  07h    see partition boot record; could be any of the above or others
  5424.  08h    OS/2 (v1.0-1.3 only)
  5425.  08h    AIX bootable partition, SplitDrive
  5426.  08h    Commodore DOS
  5427.  08h    DELL partition spanning multiple drives
  5428.  09h    AIX data partition
  5429.  09h    Coherent filesystem
  5430.  0Ah    OS/2 Boot Manager
  5431.  0Ah    OPUS
  5432.  0Ah    Coherent swap partition
  5433.  0Bh    Windows95 with 32-bit FAT
  5434.  0Ch    Windows95 with 32-bit FAT (using LBA-mode INT 13 extensions)
  5435.  0Eh    logical-block-addressable VFAT (same as 06h but using LBA-mode INT 13)
  5436.  0Fh    logical-block-addressable VFAT (same as 05h but using LBA-mode INT 13)
  5437.  10h    OPUS
  5438.  11h    OS/2 Boot Manager hidden 12-bit FAT partition
  5439.  12h    Compaq Diagnostics partition
  5440.  14h    (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part)
  5441.  14h    OS/2 Boot Manager hidden sub-32M 16-bit FAT partition
  5442.  16h    OS/2 Boot Manager hidden over-32M 16-bit FAT partition
  5443.  17h    OS/2 Boot Manager hidden HPFS partition
  5444.  17h    hidden NTFS partition
  5445.  18h    AST special Windows swap file ("Zero-Volt Suspend" partition)
  5446.  19h    Willowtech Photon coS
  5447.  1Bh    hidden Windows95 FAT32 partition
  5448.  1Ch    hidden Windows95 FAT32 partition (using LBA-mode INT 13 extensions)
  5449.  1Eh    hidden LBA VFAT partition
  5450.  20h    Willowsoft Overture File System (OFS1)
  5451.  21h    officially listed as reserved
  5452.  21h    FSo2
  5453.  23h    officially listed as reserved
  5454.  24h    NEC MS-DOS 3.x
  5455.  26h    officially listed as reserved
  5456.  31h    officially listed as reserved
  5457.  33h    officially listed as reserved
  5458.  34h    officially listed as reserved
  5459.  36h    officially listed as reserved
  5460.  38h    Theos
  5461.  3Ch    PowerQuest PartitionMagic recovery partition
  5462.  40h    VENIX 80286
  5463.  41h    Personal RISC Boot
  5464.  41h    PowerPC boot partition
  5465.  42h    SFS (Secure File System) by Peter Gutmann
  5466.  45h    EUMEL/Elan
  5467.  46h    EUMEL/Elan
  5468.  47h    EUMEL/Elan
  5469.  48h    EUMEL/Elan
  5470.  4Fh    Oberon boot/data partition
  5471.  50h    OnTrack Disk Manager, read-only partition
  5472.  51h    OnTrack Disk Manager, read/write partition
  5473.  51h    NOVELL
  5474.  52h    CP/M
  5475.  52h    Microport System V/386
  5476.  53h    OnTrack Disk Manager, write-only partition???
  5477.  54h    OnTrack Disk Manager (DDO)
  5478.  55h    EZ-Drive (see also INT 13/AH=FFh"EZ-Drive")
  5479.  56h    GoldenBow VFeature
  5480.  5Ch    Priam EDISK
  5481.  61h    SpeedStor
  5482.  63h    Unix SysV/386, 386/ix
  5483.  63h    Mach, MtXinu BSD 4.3 on Mach
  5484.  63h    GNU HURD
  5485.  64h    Novell NetWare 286
  5486.  64h    SpeedStore
  5487.  65h    Novell NetWare (3.11)
  5488.  67h    Novell
  5489.  68h    Novell
  5490.  69h    Novell
  5491.  70h    DiskSecure Multi-Boot
  5492.  71h    officially listed as reserved
  5493.  73h    officially listed as reserved
  5494.  74h    officially listed as reserved
  5495.  75h    PC/IX
  5496.  76h    officially listed as reserved
  5497.  7Eh    F.I.X.
  5498.  80h    Minix v1.1 - 1.4a
  5499.  81h    Minix v1.4b+
  5500.  81h    Linux
  5501.  81h    Mitac Advanced Disk Manager
  5502.  82h    Linux Swap partition
  5503.  82h    Prime
  5504.  82h    Solaris (Unix)
  5505.  83h    Linux native file system (ext2fs/xiafs)
  5506.  84h    OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
  5507.  85h    Linux EXT
  5508.  86h    FAT16 volume/stripe set (Windows NT)
  5509.  87h    HPFS Fault-Tolerant mirrored partition
  5510.  87h    NTFS volume/stripe set
  5511.  93h    Amoeba file system
  5512.  94h    Amoeba bad block table
  5513.  99h    Mylex EISA SCSI
  5514.  A0h    Phoenix NoteBIOS Power Management "Save-to-Disk" partition
  5515.  A1h    officially listed as reserved
  5516.  A3h    officially listed as reserved
  5517.  A4h    officially listed as reserved
  5518.  A5h    FreeBSD, BSD/386
  5519.  A6h    OpenBSD
  5520.  A9h    NetBSD (http://www.netbsd.org/)
  5521.  B1h    officially listed as reserved
  5522.  B3h    officially listed as reserved
  5523.  B4h    officially listed as reserved
  5524.  B6h    officially listed as reserved
  5525.  B7h    BSDI file system (secondarily swap)
  5526.  B8h    BSDI swap partition (secondarily file system)
  5527.  BEh    Solaris boot partition
  5528.  C0h    DR-DOS/Novell DOS secured partition
  5529.  C0h    CTOS
  5530.  C1h    DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
  5531.  C4h    DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
  5532.  C6h    DR DOS 6.0 LOGIN.EXE-secured Huge partition
  5533.  C6h    corrupted FAT16 volume/stripe set (Windows NT)
  5534.  C7h    Syrinx Boot
  5535.  C7h    corrupted NTFS volume/stripe set
  5536.  CBh    Reserved for DR-DOS secured FAT32
  5537.  CCh    Reserved for DR-DOS secured FAT32 (LBA)
  5538.  CEh    Reserved for DR-DOS secured FAT16 (LBA)
  5539.  D0h    Multiuser DOS secured FAT12
  5540.  D1h    Old Multiuser DOS secured FAT12
  5541.  D4h    Old Multiuser DOS secured FAT16 (<= 32M)
  5542.  D5h    Old Multiuser DOS secured extended partition
  5543.  D6h    Old Multiuser DOS secured FAT16 (> 32M)
  5544.  D8h    CP/M-86
  5545.  DBh    CP/M, Concurrent CP/M, Concurrent DOS
  5546.  DBh    CTOS (Convergent Technologies OS)
  5547.  E1h    SpeedStor 12-bit FAT extended partition
  5548.  E2h    DOS read-only (Florian Painke's XFDISK 1.0.4)
  5549.  E3h    DOS read-only
  5550.  E3h    Storage Dimensions
  5551.  E4h    SpeedStor 16-bit FAT extended partition
  5552.  E5h    officially listed as reserved
  5553.  E6h    officially listed as reserved
  5554.  EBh    BeOS BFS (BFS1)
  5555.  F1h    Storage Dimensions
  5556.  F2h    DOS 3.3+ secondary partition
  5557.  F3h    officially listed as reserved
  5558.  F4h    SpeedStor
  5559.  F4h    Storage Dimensions
  5560.  F5h    Prologue
  5561.  F6h    officially listed as reserved
  5562.  FEh    LANstep
  5563.  FEh    IBM PS/2 IML (Initial Microcode Load) partition
  5564.  FFh    Xenix bad block table
  5565. Note:    for partition type 07h, one should inspect the partition boot record
  5566.       for the actual file system type
  5567. SeeAlso: #00651
  5568.  
  5569. (Table 00653)
  5570. Values Bootstrap loader is called with (IBM BIOS):
  5571.     CS:IP = 0000h:7C00h
  5572.     DH = access
  5573.         bits 7-6,4-0: don't care
  5574.         bit 5: =0 device supported by INT 13
  5575.     DL = boot drive
  5576.         00h first floppy
  5577.         80h first hard disk
  5578. --------B-1A00-------------------------------
  5579. INT 1A - TIME - GET SYSTEM TIME
  5580.     AH = 00h
  5581. Return: CX:DX = number of clock ticks since midnight
  5582.     AL = midnight flag, nonzero if midnight passed since time last read
  5583. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  5584.       (except on Tandy 2000, where the clock runs at 20 ticks per second)
  5585.     IBM and many clone BIOSes set the flag for AL rather than incrementing
  5586.       it, leading to loss of a day if two consecutive midnights pass
  5587.       without a request for the time (e.g. if the system is on but idle)
  5588.     since the midnight flag is cleared, if an application calls this
  5589.       function after midnight before DOS does, DOS will not receive the
  5590.       midnight flag and will fail to advance the date
  5591. SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 55"Tandy 2000",INT 4E/AH=02h"TI"
  5592. SeeAlso: INT 62/AX=0099h,MEM 0040h:006Ch,MEM 0040h:0070h
  5593. --------B-1A01-------------------------------
  5594. INT 1A - TIME - SET SYSTEM TIME
  5595.     AH = 01h
  5596.     CX:DX = number of clock ticks since midnight
  5597. Return: nothing
  5598. Notes:    there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
  5599.       (except on Tandy 2000, where the clock runs at 20 ticks per second)
  5600.     this call resets the midnight-passed flag
  5601. SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
  5602. --------B-1A02-------------------------------
  5603. INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
  5604.     AH = 02h
  5605. Return: CF clear if successful
  5606.         CH = hour (BCD)
  5607.         CL = minutes (BCD)
  5608.         DH = seconds (BCD)
  5609.         DL = daylight savings flag (00h standard time, 01h daylight time)
  5610.     CF set on error (i.e. clock not running or in middle of update)
  5611. Note:    this function is also supported by the Sperry PC, which predates the
  5612.       IBM AT; the data is returned in binary rather than BCD on the Sperry,
  5613.       and DL is always 00h
  5614. SeeAlso: AH=00h,AH=03h,AH=04h,INT 21/AH=2Ch
  5615. --------b-1A02-------------------------------
  5616. INT 1A - Tandy 2000 - TIME - GET DATE AND TIME
  5617.     AH = 02h
  5618. Return: BX = number of days since January 1, 1980
  5619.     CH = hours
  5620.     CL = minutes
  5621.     DH = seconds
  5622.     DL = hundredths
  5623. SeeAlso: AH=03h"Tandy 2000",INT 55"Tandy 2000"
  5624. --------B-1A03-------------------------------
  5625. INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
  5626.     AH = 03h
  5627.     CH = hour (BCD)
  5628.     CL = minutes (BCD)
  5629.     DH = seconds (BCD)
  5630.     DL = daylight savings flag (00h standard time, 01h daylight time)
  5631. Return: nothing
  5632. Note:    this function is also supported by the Sperry PC, which predates the
  5633.       IBM AT; the data is specified in binary rather than BCD on the
  5634.       Sperry, and the value of DL is ignored
  5635. SeeAlso: AH=01h,AH=03h,AH=05h,INT 21/AH=2Dh,INT 4B/AH=01h
  5636. --------b-1A03-------------------------------
  5637. INT 1A - Tandy 2000 - TIME - SET DATE AND TIME
  5638.     AH = 03h
  5639.     BX = number of days since January 1, 1980
  5640.     CH = hours
  5641.     CL = minutes
  5642.     DH = seconds
  5643.     DL = hundredths
  5644. Return: nothing
  5645. SeeAlso: AH=02h"Tandy 2000",INT 55"Tandy 2000"
  5646. --------B-1A04-------------------------------
  5647. INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
  5648.     AH = 04h
  5649. Return: CF clear if successful
  5650.         CH = century (BCD)
  5651.         CL = year (BCD)
  5652.         DH = month (BCD)
  5653.         DL = day (BCD)
  5654.     CF set on error
  5655. SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Ah,INT 4B/AH=02h"TI"
  5656. --------b-1A04-------------------------------
  5657. INT 1A - Sperry PC - GET REAL-TIME CLOCK DATE
  5658.     AH = 04h
  5659. Return: CF clear if successful
  5660.         CL = year-1980
  5661.         DH = month (binary) (01h-0Ch)
  5662.         DL = day (binary) (01h-1Fh)
  5663.     CF set on error
  5664. SeeAlso: AH=02h,AH=04h,AH=05h"Sperry",INT 21/AH=2Ah,INT 4B/AH=02h"TI"
  5665. --------B-1A05-------------------------------
  5666. INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
  5667.     AH = 05h
  5668.     CH = century (BCD)
  5669.     CL = year (BCD)
  5670.     DH = month (BCD)
  5671.     DL = day (BCD)
  5672. Return: nothing
  5673. SeeAlso: AH=04h,INT 21/AH=2Bh"DATE",INT 4B/AH=00h"TI"
  5674. --------b-1A05-------------------------------
  5675. INT 1A - Sperry PC - SET REAL-TIME CLOCK DATE
  5676.     AH = 05h
  5677.     CL = year-1980
  5678.     CH = 00h (???)
  5679.     DH = month (binary) (01h-0Ch)
  5680.     DL = day (binary) (01h-1Fh)
  5681. Return: nothing
  5682. SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Bh"DATE"
  5683. --------B-1A06-------------------------------
  5684. INT 1A - TIME - SET ALARM (AT,XT286,PS)
  5685.     AH = 06h
  5686.     CH = hour (BCD)
  5687.     CL = minutes (BCD)
  5688.     DH = seconds (BCD)
  5689. Return: CF set on error (alarm already set or clock stopped for update)
  5690.     CF clear if successful
  5691. Notes:    the alarm occurs every 24 hours until turned off, invoking INT 4A each
  5692.       time
  5693.     the BIOS does not check for invalid values for the time, so the CMOS
  5694.       clock chip's "don't care" setting (any values between C0h and FFh)
  5695.       may be used for any or all three parts.  For example, to create an
  5696.       alarm once a minute, every minute, call with CH=FFh, CL=FFh, and
  5697.       DH=00h.
  5698. SeeAlso: AH=07h,AH=0Ch,INT 4A"SYSTEM"
  5699. --------B-1A07-------------------------------
  5700. INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
  5701.     AH = 07h
  5702. Return: alarm disabled
  5703. Note:    does not disable the real-time clock's IRQ
  5704. SeeAlso: AH=06h,AH=0Dh,INT 70
  5705. --------B-1A08-------------------------------
  5706. INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
  5707.     AH = 08h
  5708.     CH = hours in BCD
  5709.     CL = minutes in BCD
  5710.     DH = seconds in BCD
  5711. SeeAlso: AH=09h
  5712. --------B-1A09-------------------------------
  5713. INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
  5714.     AH = 09h
  5715. Return: CH = hours in BCD
  5716.     CL = minutes in BCD
  5717.     DH = seconds in BCD
  5718.     DL = alarm status
  5719.         00h alarm not enabled
  5720.         01h alarm enabled but will not power up system
  5721.         02h alarm will power up system
  5722. SeeAlso: AH=08h
  5723. --------B-1A0A-------------------------------
  5724. INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
  5725.     AH = 0Ah
  5726. Return: CF set on error
  5727.     CF clear if successful
  5728.         CX = count of days since Jan 1,1980
  5729. SeeAlso: AH=04h,AH=0Bh
  5730. --------B-1A0B-------------------------------
  5731. INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
  5732.     AH = 0Bh
  5733.     CX = count of days since Jan 1,1980
  5734. Return: CF set on error
  5735.     CF clear if successful
  5736. SeeAlso: AH=05h,AH=0Ah
  5737. --------B-1A0C-------------------------------
  5738. INT 1A - TIME - SET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM)
  5739.     AH = 0Ch
  5740.     CH = hours (BCD)
  5741.     CL = minutes (BCD)
  5742.     DH = seconds (BCD)
  5743.     DL = day of month (BCD)
  5744. Return: CF clear if successful
  5745.     CF set on error (alarm already set or clock nonfunctional)
  5746. Desc:    set an automatic power-on for a given time in the future
  5747. Note:    IBM classifies this function as optional
  5748. SeeAlso: AH=06h,AH=0Dh,AH=0Eh,INT 4A
  5749. --------B-1A0D-------------------------------
  5750. INT 1A - TIME - RESET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM)
  5751.     AH = 0Dh
  5752. Return: CF clear if successful
  5753.     CF set on error
  5754. Desc:    cancel a previously-set power-on alarm
  5755. Note:    IBM classifies this function as optional
  5756. SeeAlso: AH=07h,AH=0Ch,AH=0Eh
  5757. --------B-1A0E-------------------------------
  5758. INT 1A - TIME - GET RTC DATE/TIME ALARM AND STATUS (IBM)
  5759.     AH = 0Eh
  5760. Return: CF clear if successful
  5761.         BH = alarm status
  5762.         00h disabled
  5763.         01h enabled but will not power-up system
  5764.         02h enabled, system will power-up on activation
  5765.         CH = alarm time, hours (BCD)
  5766.         CL = alarm time, minutes (BCD)
  5767.         DH = seconds (BCD)
  5768.         DL = day of month (BCD)
  5769.     CF set on error
  5770. SeeAlso: AH=0Ch,AH=0Dh,AH=0Fh
  5771. --------B-1A0F-------------------------------
  5772. INT 1A - TIME - INITIALIZE REAL-TIME CLOCK
  5773.     AH = 0Fh
  5774.     AL = reserved (0)
  5775. Return: CF clear if successful
  5776.     CF set on error
  5777. SeeAlso: AH=0Ch,AH=0Dh,AH=0Eh
  5778. --------J-1A10-------------------------------
  5779. INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
  5780.     AH = 10h
  5781.     ???
  5782. Return: ???
  5783. SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
  5784. --------J-1A1000-----------------------------
  5785. INT 1A - NEC PC-9800 series - INSTALLATION CHECK
  5786.     AX = 1000h
  5787. Return: AX <> 1000h if NEC
  5788. --------J-1A11-------------------------------
  5789. INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
  5790.     AH = 11h
  5791.     ???
  5792. Return: ???
  5793. SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
  5794. --------J-1A12-------------------------------
  5795. INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
  5796.     AH = 12h
  5797.     ???
  5798. Return: ???
  5799. SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
  5800. --------A-1A3601-----------------------------
  5801. INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
  5802.     AX = 3601h
  5803. Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
  5804.         ASCIZ string "WPCORP\0"
  5805. Notes:    WordPerfect 5.0 will call this interrupt at start up to determine if a
  5806.       third party product wants to interface with it.  The third party
  5807.       product must intercept this interrupt and return the address of a
  5808.       keyboard monitor routine.
  5809.     Before checking for keyboard input, and after every key entered by the
  5810.       user, Word Perfect will call the routine whose address was provided
  5811.       in DS:SI with the following parameters:
  5812.         Entry:    AX = key code or 0
  5813.             BX = WordPerfect state flag
  5814.         Exit:    AX = 0 or key code
  5815.             BX = 0 or segment address of buffer with key codes
  5816.     See the "WordPerfect 5.0 Developer's Toolkit" for further information.
  5817. SeeAlso: INT 16/AX=5500h
  5818. --------N-1A6108-----------------------------
  5819. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
  5820.     AX = 6108h
  5821.     STACK:    WORD    conversation ID (0000h-0009h)
  5822.         DWORD    pointer to message buffer
  5823.         WORD    length of message
  5824.         DWORD    pointer to reply buffer
  5825.         WORD    length of reply buffer
  5826.         WORD    0000h (use default "Cparams" structure)
  5827. Return: AX = status (see #00654)
  5828.     STACK unchanged
  5829. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  5830.       which implements the Simple Network Application Protocol
  5831. SeeAlso: AX=6205h
  5832.  
  5833. (Table 00654)
  5834. Values for SNAP.EXE status:
  5835.  0000h    successful
  5836.  F830h    "SNAP_ABORTED"
  5837.  FC04h    "SNAP_SERVERDIED"
  5838.  FC05h    "SNAP_RESEND"
  5839.  FC06h    "SNAP_SELECTFAILED"
  5840.  FC07h    "SNAP_WRONGVERSION"
  5841.  FC08h    "SNAP_INVALIDACK"
  5842.  FC09h    "SNAP_TIMEOUT"
  5843.  FC0Ah    "SNAP_SERVERREJECT"
  5844.  FC0Bh    "SNAP_NOREPLYDUE"
  5845.  FC0Ch    "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
  5846.  FC0Dh    "SNAP_NOINIT"
  5847.  FC0Eh    "SNAP_SOCKETERROR"
  5848.  FC0Fh    "SNAP_BUFFERLIMIT"
  5849.  FC10h    "SNAP_INVALIDCID"
  5850.  FC11h    "SNAP_INVALIDOP"
  5851.  FC12h    "SNAP_XMITFAIL"
  5852.  FC13h    "SNAP_NOMORERETRIES"
  5853.  FC14h    "SNAP_BADPARMS"
  5854.  FC15h    "SNAP_NOMEMORY"
  5855.  FC16h    "SNAP_NOMORECONVS"
  5856.  FFFFh    failed (invalid function/parameter)
  5857. --------N-1A6205-----------------------------
  5858. INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
  5859.     AX = 6205h
  5860.     STACK:    WORD    conversation ID (0000h-0009h)
  5861.         DWORD    pointer to message
  5862.         WORD    length of message
  5863.         WORD    0000h (use default "Cparms" structure)
  5864. Return: AX = status (see #00654)
  5865.     STACK unchanged
  5866. SeeAlso: AX=6108h
  5867. --------N-1A6308-----------------------------
  5868. INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
  5869.     AX = 6308h
  5870.     STACK:    WORD    offset of ASCIZ "guardian"
  5871.         WORD    offset of ASCIZ hostname
  5872.         WORD    offset of ASCIZ server name
  5873.         WORD    offset of ASCIZ userid
  5874.         WORD    offset of ASCIZ password
  5875.         WORD    offset of password length
  5876.         WORD    offset of password type
  5877.         WORD    offset of "Cparms" structure (see #00655)
  5878. Return: ???
  5879.     STACK unchanged
  5880. Note:    all stacked offsets are within the SNAP data segment (use AX=6A01h
  5881.       to allocate a buffer)
  5882. SeeAlso: AX=6405h,AX=7202h
  5883.  
  5884. Format of SNAP.EXE Cparms structure:
  5885. Offset    Size    Description    (Table 00655)
  5886.  00h    WORD    retry delay in seconds
  5887.  02h    WORD    timeout delay in seconds
  5888.  04h    WORD    maximum buffer size
  5889.  06h    WORD    encryption level
  5890. --------N-1A6405-----------------------------
  5891. INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
  5892.     AX = 6405h
  5893.     STACK:    WORD    conversation ID (0000h-0009h)
  5894.         DWORD    pointer to message buffer
  5895.         WORD    length of message
  5896.         WORD    0000h (use default "Cparms" structure)
  5897. Return: AX = status (see #00654)
  5898.     STACK unchanged
  5899. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  5900.       which implements the Simple Network Application Protocol
  5901. SeeAlso: AX=6308h
  5902. --------N-1A6900-----------------------------
  5903. INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
  5904.     AX = 6900h
  5905. Return: AX = value used for DS by resident code
  5906. SeeAlso: AX=6A01h,AX=6F01h
  5907. --------N-1A6A01-----------------------------
  5908. INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
  5909.     AX = 6A01h
  5910.     STACK:    WORD    number of bytes to allocate
  5911. Return: AX = offset of allocated buffer or 0000h if out of memory
  5912.     STACK unchanged
  5913. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  5914.       which implements the Simple Network Application Protocol
  5915. SeeAlso: AX=6B01h
  5916. --------N-1A6B01-----------------------------
  5917. INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
  5918.     AX = 6B01h
  5919.     STACK:    WORD    offset within SNAP data segment of previously allocated
  5920.             buffer
  5921. Return: STACK unchanged
  5922. Note:    this call is a NOP if the specified offset is 0000h
  5923. SeeAlso: AX=6A01h
  5924. --------N-1A6C04-----------------------------
  5925. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
  5926.     AX = 6C04h
  5927.     STACK:    WORD    offset within SNAP data segment of dest (nonzero)
  5928.         WORD    segment of source buffer
  5929.         WORD    offset of source buffer
  5930.         WORD    number of bytes to copy
  5931. Return: AX = offset of byte after last one copied to destination
  5932.     STACK unchanged
  5933. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  5934.       which implements the Simple Network Application Protocol
  5935. SeeAlso: AX=6D04h
  5936. --------N-1A6D04-----------------------------
  5937. INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
  5938.     AX = 6D04h
  5939.     STACK:    WORD    offset within SNAP data segment of source buffer
  5940.         WORD    segment of destination buffer
  5941.         WORD    offset of destination buffer
  5942.         WORD    number of bytes to copy
  5943. Return: AX = offset of byte after last one copied from source
  5944.     buffer filled
  5945.     STACK unchanged
  5946. SeeAlso: AX=6C04h
  5947. --------N-1A6E01-----------------------------
  5948. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
  5949.     AX = 6E01h
  5950.     STACK:    WORD    new value for ???
  5951. Return: AX = old value of ???
  5952.     STACK unchanged
  5953. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  5954.       which implements the Simple Network Application Protocol
  5955. --------N-1A6F01-----------------------------
  5956. INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
  5957.     AX = 6F01h
  5958.     STACK: WORD 0000h
  5959. Return: AX = status
  5960.         0000h SNAP is resident
  5961.         other SNAP not present
  5962.     STACK unchanged
  5963. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  5964.       which implements the Simple Network Application Protocol, and is
  5965.       required by PCVENUS (a network shell).  The combination of SNAP and
  5966.       PCVENUS allows the use of the Andrew File System as one or more
  5967.       networked drives.
  5968. SeeAlso: AX=6900h,AX=7400h
  5969. --------N-1A7002-----------------------------
  5970. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
  5971.     AX = 7002h
  5972.     STACK:    WORD    anchor number (0000h-0009h)
  5973.         WORD    new value for the anchor
  5974. Return: AX = status
  5975.         0000h successful
  5976.         FFFFh failed (top word on stack not in range 00h-09h)
  5977.     STACK unchanged
  5978. SeeAlso: AX=7101h
  5979. --------N-1A7101-----------------------------
  5980. INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
  5981.     AX = 7101h
  5982.     STACK:    WORD    anchor number (0000h-0009h)
  5983. Return: AX = anchor's value
  5984.     STACK unchanged
  5985. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  5986.       which implements the Simple Network Application Protocol
  5987. SeeAlso: AX=7002h
  5988. --------N-1A7202-----------------------------
  5989. INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
  5990.     AX = 7202h
  5991.     STACK:    WORD    conversation ID (0000h-0009h)
  5992.         WORD    offset within resident data segment of "Cparms"
  5993.               structure (see #00655)
  5994. Return: AX = status???
  5995.     STACK unchanged
  5996. SeeAlso: AX=6308h
  5997. --------N-1A7302-----------------------------
  5998. INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
  5999.     AX = 7302h
  6000.     STACK:    WORD    conversation ID (0000h-0009h)
  6001.         WORD    offset within resident data segment of ???
  6002. Return: AX = ???
  6003.     ???
  6004.     STACK unchanged
  6005. SeeAlso: AX=7400h
  6006. --------N-1A7400-----------------------------
  6007. INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
  6008.     AX = 7400h
  6009. Return: AX = version (AH=major, AL=minor)
  6010. Note:    this call is only valid if SNAP is installed
  6011. SeeAlso: AX=7302h,INT 1A/AX=6F01h
  6012. --------N-1A75-------------------------------
  6013. INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
  6014.     AH = 75h
  6015.     AL = ???
  6016. Return: AX = ??? (0000h)
  6017. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  6018.       which implements the Simple Network Application Protocol
  6019. --------N-1A76-------------------------------
  6020. INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
  6021.     AH = 76h
  6022.     AL = ???
  6023. Return: AX = ???
  6024. --------N-1A77-------------------------------
  6025. INT 1A - SNAP.EXE 3.4 - ???
  6026.     AH = 77h
  6027.     AL = ??? (at least 01h)
  6028.     STACK:    WORD    ???
  6029.         ???
  6030. Return: ???
  6031.     STACK unchanged
  6032. --------N-1A7802-----------------------------
  6033. INT 1A - SNAP.EXE 3.4 - ???
  6034.     AX = 7802h
  6035.     STACK:    WORD    ???
  6036.         WORD    ???
  6037. Return: ???
  6038.     STACK unchanged
  6039. Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
  6040.       which implements the Simple Network Application Protocol
  6041. --------s-1A7F-------------------------------
  6042. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  6043.     AH = 7Fh
  6044.     ???
  6045. Return: ???
  6046. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  6047. SeeAlso: AH=80h,AH=83h,AH=85h
  6048. --------s-1A80-------------------------------
  6049. INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR
  6050.     AH = 80h
  6051.     AL = 00h source is 8253 channel 2
  6052.          01h source is cassette input
  6053.          02h source is I/O channel "Audio IN"
  6054.          03h source is sound generator chip
  6055. Note:    although documented in the 1000TL Technical Reference, the 1000TL
  6056.       BIOS has just an IRET for this call
  6057. SeeAlso: AH=7Fh,AH=83h
  6058. --------X-1A80-------------------------------
  6059. INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS
  6060.     AH = 80h
  6061. Return: CF clear if successful
  6062.         CX = 5353h ('SS') if Socket Services installed
  6063.         AL = number of adapters present (0-16)
  6064.         AH destroyed
  6065.     CF set on error
  6066.         AH = error code (see #00656)
  6067. SeeAlso: AH=83h"PCMCIA"
  6068.  
  6069. (Table 00656)
  6070. Values for PCMCIA error codes:
  6071.  01h    "BAD_ADAPTER" nonexistent adapter
  6072.  02h    "BAD_ATTRIBUTE" invalid attribute specified
  6073.  03h    "BAD_BASE" invalid system memory base address
  6074.  04h    "BAD_EDC" invalid EDC generator specified
  6075.  05h    "BAD_INDICATOR" invalid indicator specified
  6076.  06h    "BAD_IRQ" invalid IRQ channel specified
  6077.  07h    "BAD_OFFSET" invalid PCMCIA card offset specified
  6078.  08h    "BAD_PAGE" invalid page specified
  6079.  09h    "BAD_READ" unable to complete request
  6080.  0Ah    "BAD_SIZE" invalid window size specified
  6081.  0Bh    "BAD_SOCKET" nonexistent socket specified
  6082.  0Ch    "BAD_TECHNOLOGY" unsupported Card Technology for writes
  6083.  0Dh    "BAD_TYPE" unavailable window type specified
  6084.  0Eh    "BAD_VCC" invalid Vcc power level index specified
  6085.  0Fh    "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified
  6086.  10h    "BAD_WAIT" invalid number of wait states specified
  6087.  11h    "BAD_WINDOW" nonexistent window specified
  6088.  12h    "BAD_WRITE" unable to complete request
  6089.  13h    "NO_ADAPTERS" no adapters installed, but Socket Services is present
  6090.  14h    "NO_CARD" no card in socket
  6091.  15h    function not supported
  6092.  16h    invalid mode
  6093.  17h    invalid speed
  6094.  18h    busy
  6095. --------X-1A81-------------------------------
  6096. INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK
  6097.     AH = 81h
  6098.     DS:DX -> callback routine (see #00657) or 0000h:0000h to disable
  6099. Return: CF clear if successful
  6100.         AH destroyed
  6101.     CF set on error
  6102.         AH = error code (see #00656)
  6103. Note:    the callback will be invoked on any socket changes whose notification
  6104.       has not been disabled with the status change enable mask; it may be
  6105.       invoked either while processing a hardware interrupt from the adapter
  6106.       or while processing the following Socket Services request
  6107. SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
  6108.  
  6109. (Table 00657)
  6110. Values PCMCIA callback routine is invoked with:
  6111.     AL = adapter number
  6112.     BH = status change interrupt enable mask (see #00658)
  6113.     BL = socket number
  6114.     DH = current socket status (see #00659)
  6115.     DL = current card status (see #00660)
  6116. Return: all registers preserved
  6117. Notes:    the callback may be invoked during a hardware interrupt, and may not
  6118.       call on Socket Services
  6119.     the callback will be invoked once for each socket with a status change
  6120.  
  6121. Bitfields for PCMCIA status change interrupt enable mask:
  6122. Bit(s)    Description    (Table 00658)
  6123.  7    card detect change
  6124.  6    ready change
  6125.  5    battery warning change
  6126.  4    battery dead change
  6127.  3    insertion request
  6128.  2    ejection request
  6129.  1-0    reserved (0)
  6130.  
  6131. Bitfields for PCMCIA current socket status:
  6132. Bit(s)    Description    (Table 00659)
  6133.  7    card changed
  6134.  6    reserved (0)
  6135.  5    card insertion complete
  6136.  4    card ejection complete
  6137.  3    card insertion request pending
  6138.  2    card ejection request pending
  6139.  1    card locked
  6140.  0    reserved (0)
  6141.  
  6142. Bitfields for PCMCIA current card status:
  6143. Bit(s)    Description    (Table 00660)
  6144.  7    card detect
  6145.  6    ready
  6146.  5    battery voltage detect 2 (battery warning)
  6147.  4    battery voltage detect 1 (battery dead)
  6148.  3-1    reserved (0)
  6149.  0    write protected
  6150. --------s-1A8100-----------------------------
  6151. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
  6152.     AX = 8100h
  6153. Return: AL > 80h if supported
  6154.     AX = 00C4h if supported (1000SL/TL)
  6155.         CF set if sound chip is busy
  6156.         CF clear  if sound chip is free
  6157. Note:    the value of CF is not definitive; call this function until CF is
  6158.       clear on return, then call AH=84h"Tandy"
  6159. --------s-1A82-------------------------------
  6160. INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND
  6161.     AH = 82h
  6162.     ES:BX -> buffer for sound samples
  6163.     CX = length of buffer
  6164.     DX = transfer rate (1-4095, 1 is fastest)
  6165. Return: AH = 00h
  6166.     CF set if sound busy
  6167.     CF clear if sound chip free
  6168. Note:    the value in DX should be 1/10 the corresponding value for
  6169.       INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL.  Call
  6170.       INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function.
  6171.     The BIOS issues an INT 15/AX=91FBh when the input is complete
  6172.     DMA across a 64K boundary is masked by the BIOS
  6173. --------X-1A82-------------------------------
  6174. INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK
  6175.     AH = 82h
  6176.     DS:DX -> callback routine (see #00661) or 0000h:0000h
  6177. Return: CF clear if successful
  6178.         AH destroyed
  6179.     CF set on error
  6180.         AH = error code (see #00656)
  6181. Note:    the callback is invoked on a Write Multiple request with an unsupported
  6182.       card technology type
  6183. SeeAlso: AH=81h"PCMCIA",AH=94h
  6184.  
  6185. (Table 00661)
  6186. Values PCMCIA callback routine is invoked with:
  6187.     ES:AX -> Low-Level Socket Services Routines (see #00663)
  6188.     BH = socket attributes (see #00662)
  6189.     CX = number of bytes or words to write
  6190.     DS:SI -> data buffer to be written
  6191.     DX:DI -> 26-bit linear card address
  6192.     BP = card technology type
  6193. Return: CF clear if successful
  6194.     CF set on error
  6195.         AH = error code (07h,0Ch,12h,14h) (see #00656)
  6196.  
  6197. Bitfields for PCMCIA socket attributes:
  6198. Bit(s)    Description    (Table 00662)
  6199.  7-4    reserved (0)
  6200.  3    packed buffer
  6201.  2    even bytes only (only valid if 1 set)
  6202.  1    data width (clear = byte, set = word)
  6203.  0    memory type (clear = common, set = attribute)
  6204.  
  6205. Format of PCMCIA Low-Level Socket Services Routines:
  6206. Offset    Size    Description    (Table 00663)
  6207.  00h    WORD    offset of Write Many routine (see #00664)
  6208.  02h    WORD    offset of Write One routine (see #00665)
  6209.  04h    WORD    offset of Read One routine (see #00666)
  6210.  06h    WORD    offset of Increment Offset routine (see #00667)
  6211.  08h    WORD    offset of Set Offset routine (see #00668)
  6212.  0Ah    WORD    offset of Get Status routine (see #00669)
  6213.  
  6214. (Table 00664)
  6215. Call Write Many routine with:
  6216.     BH = socket attributes (see #00662)
  6217.     CX = number of bytes or words to write
  6218.     DS:SI -> data to be written
  6219. Return: CF clear if successful
  6220.     CF set on error
  6221.  
  6222. (Table 00665)
  6223. Call Write One routine with:
  6224.     AL/AX = data to be written
  6225.     BH = socket attributes (see #00662)
  6226. Return: CF clear if successful
  6227.     CF set on error
  6228.  
  6229. (Table 00666)
  6230. Call Read One routine with:
  6231.     BH = socket attributes (see #00662)
  6232. Return: CF clear if successful
  6233.         AL/AX = data read
  6234.     CF set on error
  6235.  
  6236. (Table 00667)
  6237. Call Increment Offset routine with:
  6238.     BH = socket attributes (see #00662)
  6239. Return: CF clear if successful
  6240.     CF set on error
  6241.  
  6242. (Table 00668)
  6243. Call Set Offset routine with:
  6244.     DX:DI = new offset address
  6245. Return: CF clear if successful
  6246.     CF set on error
  6247.  
  6248. (Table 00669)
  6249. Call Get Status routine with:
  6250.     nothing
  6251. Return: AL = current card status (see #00660)
  6252. --------s-1A83-------------------------------
  6253. INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
  6254.     AH = 83h
  6255.     AL = volume (0=silence, 7=highest)
  6256.     CX = number of bytes to play
  6257.     DX = time between sound samples (multiples of 273 nanoseconds)
  6258.         only bits 11-0 used
  6259.     ES:BX -> sound data (array of 8-bit unsigned PCM samples)
  6260. Return: AH = 00h
  6261.     CF set if sound is busy
  6262.     CF clear if sound chip is free
  6263. Notes:    this call returns immediately while the sound plays in the
  6264.       background; the sound chip is clocked at 3.57 MHz, with the low 12
  6265.       bits of DX specifying the clock divisor
  6266.     The BIOS appears to call INT 15/AX=91FBh when the sound device
  6267.       underflows to allow another INT 1A/AH=83h for seamless playing of
  6268.       long sounds.
  6269. SeeAlso: AH=84h"Tandy",INT 15/AH=91h
  6270. --------X-1A83-------------------------------
  6271. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER
  6272.     AH = 83h
  6273.     AL = adapter number
  6274. Return: CF clear if successful
  6275.         AX = Socket Services version (BCD)
  6276.         BX = implementation version (BCD)
  6277.         CX = 5353h ("SS")
  6278.         DS:SI -> ASCIZ implementor description
  6279.     CF set on error
  6280.         AH = error code (01h) (see #00656)
  6281. Note:    the current version (from the Revision A.00 documentation) of Socket
  6282.       Services is 1.00 (AX=0100h)
  6283. SeeAlso: AH=80h"PCMCIA"
  6284. --------s-1A84-------------------------------
  6285. INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
  6286.     AH = 84h
  6287. Return: ???
  6288. Note:    the BIOS will call INT 15/AX=91FBh when the sound has stopped playing
  6289. SeeAlso: AH=83h"Tandy",AH=85h"Tandy"
  6290. --------X-1A84-------------------------------
  6291. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER
  6292.     AH = 84h
  6293.     AL = adapter number
  6294. Return: CF clear if successful
  6295.         AH destroyed
  6296.         BH = number of windows
  6297.         BL = number of sockets (1-16)
  6298.         CX = number of EDCs
  6299.         DH = capabilities (see #00670)
  6300.         DL = status change interrupt used (only if DH bit 3 set)(see #00671)
  6301.     CF set on error
  6302.         AH = error code (01h) (see #00656)
  6303. SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
  6304.  
  6305. Bitfields for PCMCIA capabilities:
  6306. Bit(s)    Description    (Table 00670)
  6307.  7-6    reserved (0)
  6308.  5    status change interrupt is hardware shareable
  6309.  4    status change interrupt is software shareable
  6310.  3    status change interrupt
  6311.  2    data bus width is per-socket rather than per-window
  6312.  1    power management is per-adapter rather than per-socket
  6313.  0    indicators are per-adapter rather than per-socket
  6314.  
  6315. (Table 00671)
  6316. Values for PCMCIA status change interrupt usage:
  6317.  00h-0Fh IRQ level
  6318.  10h    NMI
  6319.  11h    I/O check
  6320.  12h    bus error
  6321.  13h    vendor specific
  6322.  14h-FFh reserved
  6323. --------s-1A85-------------------------------
  6324. INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
  6325.     AH = 85h
  6326.     ???
  6327. Return: ???
  6328. Note:    this function is not supported by the Tandy 1000SL/TL BIOS
  6329. SeeAlso: AH=7Fh,AH=83h"Tandy"
  6330. --------X-1A85-------------------------------
  6331. INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER
  6332.     AH = 85h
  6333.     AL = adapter number
  6334. Return: CF clear if successful
  6335.         AH destroyed
  6336.         DH = adapter attributes (see #00672)
  6337.     CF set on error
  6338.         AH = error code (01h) (see #00656)
  6339. SeeAlso: AH=84h"PCMCIA",AH=86h
  6340.  
  6341. Bitfields for PCMCIA adapter attributes:
  6342. Bit(s)    Description    (Table 00672)
  6343.  7-5    reserved (0)
  6344.  4    hardware share status change
  6345.  3    software share status change
  6346.  2    enable status change interrupts
  6347.  1    adapter preserves state information during reduced power consumption
  6348.  0    attempting to reduce power consumption
  6349. --------X-1A86-------------------------------
  6350. INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER
  6351.     AH = 86h
  6352.     AL = adapter number
  6353.     DH = new adapter attributes (see #00672)
  6354. Return: CF clear if successful
  6355.         AH destroyed
  6356.     CF set on error
  6357.         AH = error code (01h) (see #00656)
  6358. SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
  6359. --------X-1A87-------------------------------
  6360. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW
  6361.     AH = 87h
  6362.     AL = adapter number
  6363.     BH = window number
  6364. Return: CF clear if successful
  6365.         AH destroyed
  6366.         BL = capabilities (see #00673)
  6367.         CX = bitmap of assignable sockets
  6368.         DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0)
  6369.         DL = supported access speeds (see #00674)
  6370.         DS:SI -> Memory Window Characteristics table (see #00675)
  6371.         DS:DI -> I/O Window Characteristics table (see #00676)
  6372.     CF set on error
  6373.         AH = error code (01h,11h) (see #00656)
  6374. SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
  6375.  
  6376. Bitfields for PCMCIA window capabilities:
  6377. Bit(s)    Description    (Table 00673)
  6378.  7-5    reserved (0)
  6379.  4    separate enable for EISA comon space
  6380.  3    EISA I/O mappable
  6381.  2    I/O space
  6382.  1    attribute memory
  6383.  0    common memory
  6384.  
  6385. Bitfields for PCMCIA supported access speeds:
  6386. Bit(s)    Description    (Table 00674)
  6387.  7    reserved (0)
  6388.  6    600 ns
  6389.  5    300 ns
  6390.  4    250 ns
  6391.  3    200 ns
  6392.  2    150 ns
  6393.  1    100 ns
  6394.  0    WAIT line monitoring
  6395.  
  6396. Format of PCMCIA Memory Window Characteristics table:
  6397. Offset    Size    Description    (Table 00675)
  6398.  00h    WORD    window capabilities (see #00677)
  6399.  02h    WORD    minimum base address in 4K pages
  6400.  04h    WORD    maximum base address in 4K pages
  6401.  06h    WORD    minimum window size in 4K pages
  6402.  08h    WORD    maximum window size in 4K pages
  6403.  0Ah    WORD    window size granularity (4K units)
  6404.  0Ch    WORD    required base address alignment (4K units)
  6405.  0Eh    WORD    required card offset alignment (4K units)
  6406.  
  6407. Format of PCMCIA I/O Window Characteristics table:
  6408. Offset    Size    Description    (Table 00676)
  6409.  00h    WORD    window capabilities (see #00677)
  6410.  02h    WORD    minimum base address in bytes
  6411.  04h    WORD    maximum base address in bytes
  6412.  06h    WORD    minimum window size in bytes
  6413.  08h    WORD    maximum window size in bytes
  6414.  0Ah    WORD    window size granularity (bytes)
  6415.  
  6416. Bitfields for PCMCIA window capabilities:
  6417. Bit(s)    Description    (Table 00677)
  6418.  0    programmable base address
  6419.  1    programmable window size
  6420.  2    window disable/enable supported
  6421.  3    8-data bus
  6422.  4    16-data bus
  6423.  5    base address alignment on size boundary required
  6424.  6    power-of-two size granularity
  6425. ---memory windows---
  6426.  7    card offset must be aligned on size boundary
  6427.  8    paging hardware available
  6428.  9    paging hardware shared
  6429.  10    page disable/enable supported
  6430.  11-15    reserved (0)
  6431. ---I/O windows---
  6432.  7-15    reserved (0)
  6433. --------X-1A88-------------------------------
  6434. INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW
  6435.     AH = 88h
  6436.     AL = adapter number
  6437.     BH = window number
  6438. Return: CF clear if successful
  6439.         AH destroyed
  6440.         BL = socket number (0-16) (0 = not assigned)
  6441.         CX = window size (bytes for I/O window, 4K units for memory window)
  6442.         DH = window attributes (see #00678)
  6443.         DL = access speed (only one bit set) (see #00674)
  6444.         SI = window base address (bytes if I/O, 4K units if memory)
  6445.         DI = card offset address (memory only, 4K units)
  6446.     CF set on error
  6447.         AH = error code (01h,11h) (see #00656)
  6448. SeeAlso: AH=87h,AH=89h,AH=8Ah
  6449.  
  6450. Bitfields for PCMCIA window attributes:
  6451. Bit(s)    Description    (Table 00678)
  6452.  0    memory-mapped rather than I/O-mapped
  6453.  1    attribute memory rather than common (memory-mapped)
  6454.     EISA mapped (I/O)
  6455.  2    enabled
  6456.  3    16-data path
  6457.  4    subdivided into pages (memory-mapped only)
  6458.  5    non-specific access slot enable (EISA-mapped only)
  6459.  6-7    reserved (0)
  6460. --------X-1A89-------------------------------
  6461. INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW
  6462.     AH = 89h
  6463.     AL = adapter number
  6464.     BH = window number
  6465.     BL = socket number
  6466.     CX = window size (bytes if I/O window, 4K units if memory window)
  6467.     DH = window attributes (see #00678)
  6468.     DL = access speed (only one bit set) (see #00674)
  6469.     SI = window base address (bytes if I/O, 4K units if memory window)
  6470.     DI = card offset addrress (memory only, 4K units)
  6471. Return: CF clear if successful
  6472.         AH destroyed
  6473.     CF set on error
  6474.         AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #00656)
  6475. SeeAlso: AH=87h,AH=88h,AH=8Bh
  6476. --------X-1A8A-------------------------------
  6477. INT 1A - PCMCIA Socket Services v1.00 - GET PAGE
  6478.     AH = 8Ah
  6479.     AL = adapter number
  6480.     BH = window number
  6481.     BL = page number
  6482. Return: CF clear if successful
  6483.         AH destroyed
  6484.         DX = page attributes (see #00679)
  6485.         DI = memory card offset (4K units)
  6486.     CF set on error
  6487.         AH = error code (01h,08h,11h) (see #00656)
  6488. Notes:    this function is only valid for memory-mapped windows
  6489.     the socket being operated on is implied by the previous AH=89h call
  6490. SeeAlso: AH=88h,AH=8Bh
  6491.  
  6492. Bitfields for PCMCIA page attributes:
  6493. Bit(s)    Description    (Table 00679)
  6494.  0    page enabled
  6495.  15-1    reserved (0)
  6496. --------X-1A8B-------------------------------
  6497. INT 1A - PCMCIA Socket Services v1.00 - SET PAGE
  6498.     AH = 8Bh
  6499.     AL = adapter number
  6500.     BH = window number
  6501.     BL = page number
  6502.     DX = page attributes (see #00679)
  6503.     DI = memory card offset (4K units)
  6504. Return: CF clear if successful
  6505.         AH destroyed
  6506.     CF set on error
  6507.         AH = error code (01h,02h,07h,08h,11h) (see #00656)
  6508. Notes:    this function is only valid for memory-mapped windows
  6509.     the socket being operated on is implied by the previous AH=89h call
  6510. SeeAlso: AH=89h,AH=8Ah
  6511. --------X-1A8C-------------------------------
  6512. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET
  6513.     AH = 8Ch
  6514.     AL = adapter number
  6515.     BL = socket number (01h to maximum supported by adapter)
  6516. Return: CF clear if successful
  6517.         AH destroyed
  6518.         DH = capabilities (see #00680)
  6519.         DL = hardware indicators (see #00681)
  6520.         DS:SI -> Socket Characteristics table (see #00682)
  6521.         DS:DI -> Power Management table (see #00684)
  6522.     CF set on error
  6523.         AH = error code (01h,0Bh) (see #00656)
  6524. SeeAlso: AH=87h,AH=8Dh,AH=8Eh
  6525.  
  6526. Bitfields for PCMCIA socket capabilities:
  6527. Bit(s)    Description    (Table 00680)
  6528.  0    card change
  6529.  1    card lock
  6530.  2    insert card (motor control)
  6531.  3    eject card (motor control)
  6532.  4-7    reserved (0)
  6533.  
  6534. Bitfields for PCMCIA socket hardware indicators:
  6535. Bit(s)    Description    (Table 00681)
  6536.  0    busy status
  6537.  1    write-protected
  6538.  2    battery status
  6539.  3    card lock status
  6540.  4    XIP status (eXecute-In-Place)
  6541.  5-7    reserved (0)
  6542.  
  6543. Format of PCMCIA Socket Characteristics table:
  6544. Offset    Size    Description    (Table 00682)
  6545.  00h    WORD    supported card types (see #00683)
  6546.  02h    WORD    steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15)
  6547.  04h    WORD    additional steerable IRQ levels
  6548.         bit 0: NMI
  6549.         bit 1: I/O check
  6550.         bit 2: bus error
  6551.         bit 3: vendor-unique
  6552.         bits 4-7 reserved (0)
  6553.  
  6554. Bitfields for supported card types:
  6555. Bit(s)    Description    (Table 00683)
  6556.  0    memory card
  6557.  1    I/O card
  6558.  2-7    reserved (0)
  6559.  
  6560. Format of PCMCIA Power Management table:
  6561. Offset    Size    Description    (Table 00684)
  6562.  00h    WORD    number of entries in table (0 if power management not avail)
  6563.  02h 2N BYTEs    power levels
  6564.         byte 0: voltage in 0.1V units
  6565.         byte 1: power supply
  6566.             bit 7: Vcc
  6567.             bit 6: Vpp1
  6568.             bit 5: Vpp2
  6569. --------X-1A8D-------------------------------
  6570. INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET
  6571.     AH = 8Dh
  6572.     AL = adapter number
  6573.     BL = socket number (01h to maximum supported by adapter)
  6574. Return: CF clear if successful
  6575.         AH destroyed
  6576.         BH = status change interrupt enable mask (see #00658)
  6577.         CH = Vcc level (lower nybble) (see #00684)
  6578.         CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  6579.         DH = current socket status (see #00659)
  6580.         DL = indicators (see #00681)
  6581.         SI = card type (see #00685)
  6582.         DI = IRQ level steering (I/O only) (see #00686)
  6583.     CF set on error
  6584.         AH = error code (01h,0Bh) (see #00656)
  6585. SeeAlso: AH=8Ch,AH=8Eh
  6586.  
  6587. Bitfields for PCMCIA card type:
  6588. Bit(s)    Description    (Table 00685)
  6589.  0    memory
  6590.  1    I/O
  6591.  2-15    reserved (0)
  6592.  
  6593. Bitfields for PCMCIA I/O level steering:
  6594. Bit(s)    Description    (Table 00686)
  6595.  15    interrupt steering enabled
  6596.  14-5    reserved (0)
  6597.  4-0    IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor)
  6598. --------X-1A8E-------------------------------
  6599. INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET
  6600.     AH = 8Eh
  6601.     AL = adapter number
  6602.     BL = socket number (01h to maximum supported by adapter)
  6603.     BH = status change interrupt enable mask (see #00658)
  6604.     CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
  6605.     DH = current socket status (see #00659)
  6606.     DL = indicators (see #00681)
  6607.     SI = card type (see #00685)
  6608.     DI = IRQ level steering (I/O only) (see #00686)
  6609. Return: CF clear if successful
  6610.         AH destroyed
  6611.     CF set on error
  6612.         AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #00656)
  6613. SeeAlso: AH=8Ch,AH=8Dh
  6614. --------X-1A8F-------------------------------
  6615. INT 1A - PCMCIA Socket Services v1.00 - GET CARD
  6616.     AH = 8Fh
  6617.     AL = adapter number
  6618.     BL = socket number (01h to maximum supported by adapter)
  6619. Return: CF clear if successful
  6620.         AH destroyed
  6621.         DL = current card status (see #00660)
  6622.     CF set on error
  6623.         AH = error code (01h,0Bh) (see #00656)
  6624. SeeAlso: AH=8Dh,AH=90h
  6625. --------X-1A90-------------------------------
  6626. INT 1A - PCMCIA Socket Services v1.00 - RESET CARD
  6627.     AH = 90h
  6628.     AL = adapter number
  6629.     BL = socket number (01h to maximum supported by adapter)
  6630. Return: CF clear if successful
  6631.         AH destroyed
  6632.     CF set on error
  6633.         AH = error code (01h,0Bh,14h) (see #00656)
  6634. Note:    toggles RESET pin of the specified card, but does not wait after
  6635.       toggling the pin; it is the caller's responsibility to avoid
  6636.       accessing the card before it is ready again
  6637. --------X-1A91-------------------------------
  6638. INT 1A - PCMCIA Socket Services v1.00 - READ ONE
  6639.     AH = 91h
  6640.     AL = adapter number
  6641.     BL = socket number (01h to maximum supported by adapter)
  6642.     BH = attributes (see #00687)
  6643.     DX:SI = card address
  6644. Return: CF clear if successful
  6645.         AH destroyed
  6646.         CL/CX = value read
  6647.     CF set on error
  6648.         AH = error code (01h,07h,09h,0Bh,14h) (see #00656)
  6649.         CX may be destroyed
  6650. Note:    this function is only valid for I/O-mapped sockets
  6651. SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+"
  6652.  
  6653. Bitfields for PCMCIA attributes:
  6654. Bit(s)    Description    (Table 00687)
  6655.  2    even bytes only
  6656.  1    word rather than byte
  6657.  0    attribute memory instead of common memory
  6658. --------X-1A92-------------------------------
  6659. INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE
  6660.     AH = 92h
  6661.     AL = adapter number
  6662.     BL = socket number (01h to maximum supported by adapter)
  6663.     BH = attributes (see #00687)
  6664.     CL/CX = value to write
  6665.     DX:SI = card address
  6666. Return: CF clear if successful
  6667.         AH destroyed
  6668.     CF set on error
  6669.         AH = error code (01h,07h,0Bh,12h,14h) (see #00656)
  6670. Note:    this function is only valid for I/O-mapped sockets; it also does not
  6671.       implement Card Technology handling--use AH=94h when writing to
  6672.       non-RAM technologies
  6673. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+"
  6674. --------X-1A93-------------------------------
  6675. INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE
  6676.     AH = 93h
  6677.     AL = adapter number
  6678.     BL = socket number (01h to maximum supported by adapter)
  6679.     BH = attributes (see #00687)
  6680.     CX = number of bytes or words to read
  6681.     DX:SI = card address
  6682.     DS:DI -> data buffer to be filled
  6683. Return: CF clear if successful
  6684.         AH destroyed
  6685.     CF set on error
  6686.         AH = error code (01h,07h,09h,0Bh,14h) (see #00656)
  6687. Note:    this function is only available on I/O-mapped sockets
  6688. SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+"
  6689. --------X-1A94-------------------------------
  6690. INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE
  6691.     AH = 94h
  6692.     AL = adapter number
  6693.     BL = socket number (01h to maximum supported by adapter)
  6694.     BH = attributes (see #00687)
  6695.     CX = number of bytes or words to read
  6696.     DX:DI = card address
  6697.     DS:SI -> buffer containing data
  6698.     BP = Card Technology type (0000h = RAM)
  6699. Return: CF clear if successful
  6700.         AH destroyed
  6701.     CF set on error
  6702.         AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #00656)
  6703. Notes:    this function is only available on I/O-mapped sockets
  6704.     Socket Services calls the Card Technology callback (see #00661) for
  6705.       any card technology it does not directly support
  6706. SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+"
  6707. --------X-1A95-------------------------------
  6708. INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE
  6709.     AH = 95h
  6710.     AL = adapter number
  6711.     BH = EDC generator number
  6712. Return: CF clear if successful
  6713.         AH destroyed
  6714.         CX = bitmap of assignable sockets
  6715.         DH = EDC capabilities (see #00688)
  6716.         DL = supported EDC types (see #00689)
  6717.     CF set on error
  6718.         AH = error code (01h,04h) (see #00656)
  6719. SeeAlso: AH=96h,AH=9Ch
  6720.  
  6721. Bitfields for EDC capabilities:
  6722. Bit(s)    Description    (Table 00688)
  6723.  0    unidirectional only generation
  6724.  1    bidirectional only generation
  6725.  2    register-based (I/O-mapped) support
  6726.  3    memory-mapped support
  6727.  4    pausable
  6728.  5-7    reserved (0)
  6729.  
  6730. Bitfields for supported EDC types:
  6731. Bit(s)    Description    (Table 00689)
  6732.  0    8-checksum
  6733.  1    16-CRC-SDLC
  6734.  2-7    reserved (0)
  6735. --------X-1A96-------------------------------
  6736. INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE
  6737.     AH = 96h
  6738.     AL = adapter number
  6739.     BH = EDC generator number
  6740. Return: CF clear if successful
  6741.         AH destroyed
  6742.         BL = socket number
  6743.         DH = EDC attributes (see #00690)
  6744.         DL = EDC type (see #00689) (only one bit set)
  6745.     CF set on error
  6746.         AH = error code (01h,04h) (see #00656)
  6747. SeeAlso: AH=95h,AH=97h,AH=9Ch
  6748.  
  6749. Bitfields for EDC attributes:
  6750. Bit(s)    Description    (Table 00690)
  6751.  0    unidirectional only
  6752.  1    (if 0 set) clear=read, set=write
  6753.  2-7    reserved (0)
  6754. --------X-1A97-------------------------------
  6755. INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE
  6756.     AH = 97h
  6757.     AL = adapter number
  6758.     BH = EDC generator
  6759.     BL = socket number
  6760.     DH = EDC attributes (see #00690)
  6761.     DL = EDC type (see #00689) (only one bit may be set)
  6762. Return: CF clear if successful
  6763.         AH destroyed
  6764.     CF set on error
  6765.         AH = error code (01h,02h,04h,0Bh) (see #00656)
  6766. SeeAlso: AH=96h,AH=9Ch
  6767. --------X-1A98-------------------------------
  6768. INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE
  6769.     AH = 98h
  6770.     AL = adapter number
  6771.     BH = EDC generator
  6772. Return: CF clear if successful
  6773.         AH destroyed
  6774.     CF set on error
  6775.         AH = error code (01h,04h) (see #00656)
  6776. SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
  6777. --------X-1A99-------------------------------
  6778. INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE
  6779.     AH = 99h
  6780.     AL = adapter number
  6781.     BH = EDC generator
  6782. Return: CF clear if successful
  6783.         AH destroyed
  6784.     CF set on error
  6785.         AH = error code (01h,04h) (see #00656)
  6786. SeeAlso: AH=9Ah
  6787. --------X-1A9A-------------------------------
  6788. INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE
  6789.     AH = 9Ah
  6790.     AL = adapter number
  6791.     BH = EDC generator
  6792. Return: CF clear if successful
  6793.         AH destroyed
  6794.     CF set on error
  6795.         AH = error code (01h,04h) (see #00656)
  6796. SeeAlso: AH=99h,AH=98h
  6797. --------X-1A9B-------------------------------
  6798. INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE
  6799.     AH = 9Bh
  6800.     AL = adapter number
  6801.     BH = EDC generator
  6802. Return: CF clear if successful
  6803.         AH destroyed
  6804.     CF set on error
  6805.         AH = error code (see #00656)
  6806. SeeAlso: AH=98h,AH=99h,AH=9Ch
  6807. --------X-1A9C-------------------------------
  6808. INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE
  6809.     AH = 9Ch
  6810.     AL = adapter number
  6811.     BH = EDC generator
  6812. Return: CF clear if successful
  6813.         AH destroyed
  6814.         DL/DX = computed checksum or CRC
  6815.     CF set on error
  6816.         AH = error code (01h,04h) (see #00656)
  6817. SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
  6818. --------X-1A9D-------------------------------
  6819. INT 1A - PCMCIA Socket Services v2.1??? - GET VENDOR INFO
  6820.     AH = 9Dh
  6821.     AL = adapter number
  6822.     BH = EDC generator
  6823.     ES:EDI -> vendor information structure (see #00691)
  6824. Return: CF clear if successful
  6825.         AH destroyed
  6826.         DX = vendor release number in BCD
  6827.         ES:EDI unchanged
  6828.     CF set on error
  6829.         AH = error code (01h,15h) (see #00656)
  6830. Notes:    this API is supported by recent versions of the AMI BIOS
  6831.     the low-level API described here is hidden by the higher-level
  6832.       ExCA API once Card Services has been installed
  6833. SeeAlso: AH=9Dh"ExCA"
  6834.  
  6835. Format of Vendor Information structure:
  6836. Offset    Size    Description    (Table 00691)
  6837.  00h    WORD    buffer length (set to size of buffer below)
  6838.  04h    WORD    (ret) data length
  6839.  08h  x BYTEs    implementor name (ASCIIZ string)
  6840. --------X-1A9D-------------------------------
  6841. INT 1A - Intel PCMCIA ExCA Card Services - API
  6842.     AH = 9Dh
  6843.     AL = subfunction (see #00692)
  6844.     ???
  6845. Return: ???
  6846. SeeAlso: AH=9Dh"ExCA",#00891
  6847.  
  6848. (Table 00692)
  6849. Values for PCMCIA ExCA Card Services subfunction number:
  6850.  00h    Client Services: Get Number of Sockets
  6851.  01h    Advanced Client Utilities: Initialize
  6852.  02h    Client Services: Register Client
  6853.  03h    Client Services: Deregister Client
  6854.  04h    Advanced Client Utilities: Enumerate Clients
  6855.  05h    Client Services: Register SCB
  6856.  06h    Client Services: Deregister SCB
  6857.  07h    Advanced Client Utilities: Register MTD
  6858.  08h    Advanced Client Utilities: Deregister MTD
  6859.  09h    Advanced Client Utilities: Enumerate MTD
  6860.  0Ah    Client Services: Get Status
  6861.  0Bh    Client Services: Reset Card
  6862.  0Ch    Client Utilities: Get First Tuple
  6863.  0Dh    Client Utilities: Get Next Tuple
  6864.  0Eh    Client Utilities: Determine First Region
  6865.  0Fh    Client Utilities: Determine Next Region
  6866.  10h    Client Utilities: Get First Region
  6867.  11h    Client Utilities: Get Next Region
  6868.  12h    Client Utilities: Get First Partition
  6869.  13h    Client Utilities: Get Next Partition
  6870.  14h    Bulk Memory Services: Open Region
  6871.  15h    Bulk Memory Services: Read Memory
  6872.  16h    Bulk Memory Services: Write Memory
  6873.  17h    Bulk Memory Services: Copy Memory
  6874.  18h    Bulk Memory Services: Erase Memory
  6875.  19h    Resource Management: Request I/O
  6876.  1Ah    Resource Management: Release I/O
  6877.  1Bh    Resource Management: Request Memory
  6878.  1Ch    Client Services: Modify Window
  6879.  1Dh    Resource Management: Release Memory
  6880.  1Eh    Client Services: Map Mem Page
  6881.  1Fh    Advanced Client Utilities: Return SS Entry
  6882.  20h    Advanced Client Utilities: Map Log to Phy
  6883.  21h    Advanced Client Utilities: Map Log Phy to Log
  6884.  22h    Resource Management: Request IRQ
  6885.  23h    Resource Management: Release IRQ
  6886.  24h    Bulk Memory Services: Close Region
  6887. --------X-1A9E-------------------------------
  6888. INT 1A - PCMCIA Socket Services v2.1 - ACKNOWLEDGE INTERRUPT
  6889.     AH = 9Eh
  6890.     AL = adapter number
  6891. Return: CF clear if successful
  6892.         AH destroyed
  6893.         CX = bitmap representing sockets which have changed status
  6894.     CF set on error
  6895.         AH = error code (01h) (see #00656)
  6896. Note:    this API is supported by recent versions of the AMI BIOS
  6897. --------X-1A9F-------------------------------
  6898. INT 1A - PCMCIA Socket Services v2.1 - GET/SET PRIOR INT 1A HANDLER
  6899.     AH = 9Fh
  6900.     AL = adapter number
  6901.     BL = mode
  6902.         00h get prior INT 1Ah handler
  6903.         01h set prior INT 1Ah handler
  6904.         CX:DX -> new prior handler
  6905. Return: CF clear if successful
  6906.         AH destroyed
  6907.         CX:DX -> old prior handler
  6908.     CF set on error
  6909.         AH = error code (01h,15h,18h) (see #00656)
  6910. Desc:    allows hooking of INT 16h "behind" the Socket Services hook
  6911. Note:    this API is supported by recent versions of the AMI BIOS
  6912. SeeAlso: AH=9Eh,AH=A0h"PCMCIA",AH=AEh"PCMCIA"
  6913. --------c-1AA0-------------------------------
  6914. INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
  6915.     AH = A0h
  6916. Return: AH = B0h if installed
  6917.         AL = pending INT 1A/AH=D0h subfunction if nonzero???
  6918.         ES = code segment
  6919.         ES:BX -> name of current spool file
  6920.         ES:SI -> current despool file
  6921.         CL = despooler state (00h disabled, 41h enabled)
  6922.         CH = spooler state (00h disabled, 41h enabled)
  6923.         DL = despooler activity
  6924.         00h currently active printing a file
  6925.         41h standing by
  6926.         DH = 00h ???
  6927.            = 41h ???
  6928.         DI = 0000h ???
  6929.          0001h ???
  6930. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  6931.       Software Company
  6932. Note:    this function is also supported by Vertisoft's Emulaser utility ELSPL,
  6933.       as that is a licensed version of Disk Spool II
  6934. SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
  6935. --------X-1AA0-------------------------------
  6936. INT 1A - PCMCIA Socket Services v2.1 - GET/SET SOCKET SERVICES ADDRESS
  6937.     AH = A0h
  6938.     AL = adapter number
  6939.     BH = mode
  6940.         00h real mode
  6941.         01h 16:16 protected mode
  6942.         02h 16:32 protected mode
  6943.         03h 00:32 (Flat) protected mode
  6944.     BL = subfunction
  6945.         00h return number of additional data areas (see #00693)
  6946.         01h return description of additional data areas (see #00694)
  6947.         02h accept mode-specific pointers to data areas (see #00695)
  6948.     ES:EDI -> buffer supplied by caller
  6949. Return: CF clear if successful
  6950.         AH destroyed
  6951.         CX = number of additional data areas
  6952.         ES:EDI unchanged
  6953.     CF set on error
  6954.         AH = error code (01h,02h,15h,16h,18h) (see #00656)
  6955. SeeAlso: AH=9Fh,AH=AEh
  6956.  
  6957. Format of PCMCIA Subfunction 00h Buffer Table Entry structure:
  6958. Offset    Size    Description    (Table 00693)
  6959.  00h    DWORD    32-bit linear base address of the code segment
  6960.  04h    DWORD    segment limit of the code segment
  6961.  08h    DWORD    entry point offset
  6962.  0Ch    DWORD    32-bit linear base address of the data segment
  6963.         (ignored in 00:32 flat mode)
  6964.  10h    DWORD    segment limit of the data segment
  6965.  14h    DWORD    data area offset.  Only used in 32-bit protected mode.
  6966. SeeAlso: #00694,#00695
  6967.  
  6968. Format of PCMCIA Additional Data Area Description structure [array]:
  6969. Offset    Size    Description    (Table 00694)
  6970.  00h    DWORD    32-bit linear base address of the additional data segment
  6971.         (ignored in 00:32 flat mode)
  6972.  04h    DWORD    segment limit of the code segment
  6973.  08h    DWORD    data area offset (only used in 32-bit protected mode)
  6974. SeeAlso: #00693,#00695
  6975.  
  6976. Format of PCMCIA Subfunction 02h Buffer Table Entry structure:
  6977. Offset    Size    Description    (Table 00695)
  6978.  00h    DWORD    32-bit offset(ignored in 16:16 protected mode)
  6979.  04h    DWORD    selector (only used in 00:32 flat mode)
  6980.  08h    DWORD    reserved
  6981. SeeAlso: #00693,#00694
  6982. --------X-1AA1-------------------------------
  6983. INT 1A - PCMCIA Socket Services v2.1 - GET ACCESS OFFSETS
  6984.     AH = A1h
  6985.     AL = adapter number
  6986.     BH = Mode
  6987.          00h = Real Mode
  6988.          01h = 16:16 Protected Mode
  6989.          02h = 16:32 Protected Mode
  6990.          03h = 00:32 Protected Mode
  6991.     CX = Number of access offsets
  6992.     ES:EDI -> buffer supplied by caller, CX words long (see #00696)
  6993. Return: CF clear if successful
  6994.         AH destroyed
  6995.         DX = number of access offsets supported
  6996.         ES:EDI unchanged
  6997.     CF set on error
  6998.         AH = error code (01h,15h,16h) (see #00656)
  6999. Desc:    Returns an array of low-level adapter-specific optimized
  7000.     PC Card access routines for adapters that use registers
  7001.     or I/O ports to access PC Card memory.    Adapters that access
  7002.     PC Card memory through windows mapped to host system memory
  7003.     do not support this function.
  7004. Note:    offsets returned are 16-bit offsets into the
  7005.     Socket Services code segment.  They must be called
  7006.     appropriately for the processor mode selected.
  7007.     (Real, 16:16 and 16:32 modes use FAR CALL,
  7008.     Flat 00:32 mode uses a 32-bit NEAR CALL).
  7009. SeeAlso: AH=AEh
  7010.  
  7011. Format of Offset Table structure:
  7012. Offset    Size    Description    (Table 00696)
  7013.  00h    WORD    Set Address
  7014.  02h    WORD    Set Auto Increment
  7015.  04h    WORD    Read Byte
  7016.  06h    WORD    Read Word
  7017.  08h    WORD    Read Byte with Auto Increment
  7018.  0Ah    WORD    Read Word with Auto Increment
  7019.  0Ch    WORD    Read Words
  7020.  0Eh    WORD    Read Words with Auto Increment
  7021.  10h    WORD    Write Byte
  7022.  12h    WORD    Write Word
  7023.  14h    WORD    Write Byte with Auto Increment
  7024.  16h    WORD    Write Word with Auto Increment
  7025.  18h    WORD    Write Words
  7026.  1Ah    WORD    Write Words with Auto Increment
  7027.  1Ch    WORD    Compare Byte
  7028.  1Eh    WORD    Compare Byte with Auto Increment
  7029.  20h    WORD    Compare Words
  7030.  22h    WORD    Compare Words with Auto Increment
  7031. --------X-1AA2-------------------------------
  7032. INT 1A - CardBus Socket Services - ACCESS CONFIGURATION SPACE
  7033.     AH = A2h
  7034.     ??? details not available
  7035. Return: ???
  7036. --------X-1AA4-------------------------------
  7037. INT 1A - CardBus Socket Services - GET BRIDGE WINDOW / WINDOW CAPABILITIES
  7038.     AH = A4h
  7039.     ??? details not available
  7040. Return: ???
  7041. SeeAlso: AH=A5h"CardBus"
  7042. --------X-1AA5-------------------------------
  7043. INT 1A - CardBus Socket Services - SET BRIDGE WINDOW
  7044.     AH = A5h
  7045.     ??? details not available
  7046. Return: ???
  7047. SeeAlso: AH=A4h"CardBus"
  7048. --------c-1AAB-------------------------------
  7049. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  7050.     AH = ABh
  7051. Return: AH = BAh if installed
  7052.         AL = pending INT 1A/AH=ADh subfunction if nonzero???
  7053.         ES = code segment
  7054.         ES:BX -> name of current spool file
  7055.         ES:SI -> current despool file
  7056.         CL = despooler state (00h disabled, 41h enabled)
  7057.         CH = spooler state (00h disabled, 41h enabled)
  7058.         DL = despooler activity
  7059.         00h currently active printing a file
  7060.         41h standing by
  7061.         DH = 00h ???
  7062.            = 41h ???
  7063.         DI = 0000h ???
  7064.          0001h ???
  7065. Program: Disk Spool II is a shareware disk-based print spooler by Budget
  7066.       Software Company
  7067. SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
  7068. --------c-1AAC-------------------------------
  7069. INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
  7070.     AH = ACh
  7071. Return: (see AH=ABh)
  7072. Note:    this function is identical to AH=ABh
  7073. SeeAlso: AH=A0h,AH=ABh,AH=ADh
  7074. --------c-1AAD-------------------------------
  7075. INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
  7076.     AH = ADh
  7077.     AL = function code (see #00697)
  7078. Return: AH = 00h if successful
  7079. SeeAlso: AH=ABh
  7080.  
  7081. (Table 00697)
  7082. Values for Disk Spool function code:
  7083.  02h    enable spooler only
  7084.  03h    enable the despooler
  7085.  04h    disable the despooler
  7086.  08h    inhibit popup menu
  7087.  09h    enable popup menu
  7088.  0Ah    ???
  7089.  0Bh    disable the spooler
  7090.  0Ch    start despooler after last successfully printed document???
  7091.  0Dh    start despooler at the exact point where it last left off???
  7092.  0Eh    pop up the menu
  7093.  0Fh    ???
  7094.  11h    ???
  7095.  14h    ???
  7096.  15h    ???
  7097.  16h    ???
  7098.  17h    ???
  7099.  18h    ???
  7100.  19h    ???
  7101.  20h    clear file pointed to by the despooler???
  7102.  21h    ???
  7103.  22h    ???
  7104.  23h    ???
  7105.  30h    ???
  7106. --------X-1AAE-------------------------------
  7107. INT 1A - PCMCIA Socket Services v2.1 - VENDOR SPECIFIC
  7108.     AH = AEh
  7109.     AL = adapter number
  7110.     all other registers are vendor-specific
  7111. Return: vendor specific
  7112. SeeAlso: AH=A1h,AH=AFh
  7113. --------X-1AAE-------------------------------
  7114. INT 1A - PCMCIA Socket Services v2.1 - API
  7115.     AH = AEh
  7116.     SI = function
  7117.         0002h ???
  7118.         0100h ???
  7119.         0101h ???
  7120.         8000h ???
  7121.         8001h ???
  7122.     details not yet available
  7123. Return: CF clear if successful
  7124.     CF set on error
  7125.         AH = error code (02h,0Bh,11h,15h,17h) (see #00656)
  7126. SeeAlso: AH=9Eh
  7127. --------X-1AAF-------------------------------
  7128. INT 1A - PCMCIA v2 Card Services - API
  7129.     AH = AFh
  7130.     AL = function
  7131.         00h close memory
  7132.         01h copy memory
  7133.         02h deregister client
  7134.         03h get client information (see #00702)
  7135.         04h get configuration information (see #00704)
  7136.         05h get first partition
  7137.         06h get first region
  7138.         07h get first tuple (see #00711)
  7139.         08h get next partition
  7140.         09h get next region
  7141.         0Ah get next tuple
  7142.         0Bh    get Card Services information (see #00700)
  7143.         0Ch get status
  7144.         0Dh    get tuple data (see #00712)
  7145.         0Eh    get first client (see #00701)
  7146.         0Fh get/register Erase Queue
  7147.         10h    register client (see #00713)
  7148.         11h reset function
  7149.         12h map logical socket
  7150.         13h map logical window
  7151.         14h map memory page
  7152.         15h map physical socket
  7153.         16h map physical window
  7154.         17h modify window
  7155.         18h open memory
  7156.         19h read memory
  7157.         1Ah register MTD
  7158.         1Bh release I/O
  7159.         1Ch release IRQ (see #00715)
  7160.         1Dh release window
  7161.         1Eh release configuration (see #00716)
  7162.         1Fh request I/O (see #00717)
  7163.         20h request IRQ (see #00718)
  7164.         21h reqeust window (see #00720)
  7165.         22h request socket mask
  7166.         23h return SS entry
  7167.         24h write memory
  7168.         25h deregister Erase Queue
  7169.         26h check Erase Queue
  7170.         27h modify configuration
  7171.         28h register timer
  7172.         29h set region
  7173.         2Ah get next client
  7174.         2Bh validate CIS
  7175.         2Ch request exclusive access (see #00723)
  7176.         2Dh release exclusive access (see #00723)
  7177.         2Eh get event mask
  7178.         2Fh release socket mask
  7179.         30h request configuration (see #00724)
  7180.         31h set event mask
  7181.         32h add Socket Service
  7182.         33h replace Socket Service
  7183.         34h vendor-specific
  7184.         35h adjust resource information
  7185.         36h access configuration register
  7186.         37h get first window
  7187.         38h get next window
  7188.         39h get memory page
  7189.         3Ah request DMA
  7190.         3Bh release DMA
  7191.     further details not yet available
  7192. Return: ??? = result code (see #00698)
  7193. SeeAlso: AH=AEh
  7194.  
  7195. (Table 00698)
  7196. Values for PCMCIA Card Services result codes:
  7197.  00h    successful
  7198.  01h    invalid adapter number
  7199.  02h    bad value for attribute field
  7200.  03h    bad value for base system memory address
  7201.  04h    invalid EDC generator specified
  7202.  05h    (reserved for historical reasons)
  7203.  06h    invalid IRQ level specified
  7204.  07h    invalid PC Card memory array offset
  7205.  08h    invalid page number specified
  7206.  09h    unable to complete read request
  7207.  0Ah    invalid size specified
  7208.  0Bh    invalid socket number
  7209.  0Ch    (reserved for historical reasons)
  7210.  0Dh    invalid window or interface type
  7211.  0Eh    invalid Vcc power level specified
  7212.  0Fh    invalid Vpp1 or Vpp2 power level specified
  7213.  10h    (reserved for historical reasons)
  7214.  11h    invalid window number
  7215.  12h    unable to complete write request
  7216.  13h    (reserved for historical reasons)
  7217.  14h    no PC Card in socket
  7218.  15h    service not supported by implementation
  7219.  16h    unsupported processor mode
  7220.  17h    specified speed not available
  7221.  18h    busy -- retry later
  7222.  19h    undefined error (general failure)
  7223.  1Ah    storage medium write protected
  7224.  1Bh    argument length in (E)CX is invalid
  7225.  1Ch    bad value(s) in argument packet
  7226.  1Dh    configuration has already been locked
  7227.  1Eh    requested resource already in use
  7228.  1Fh    no more items of requested type available
  7229.  20h    out of resources
  7230.  21h    invalid client handle
  7231.  22h    unsupported client version
  7232.  
  7233. (Table 00699)
  7234. Values for Card Services Callback Event codes:
  7235.  01h    battery dead
  7236.  02h    battery low
  7237.  03h    card locked
  7238.  04h    card has become ready
  7239.  05h    card removed
  7240.  06h    card unlocked
  7241.  07h    motorized ejection complete
  7242.  08h    ejection requested
  7243.  09h    insertion complete
  7244.  0Ah    insertion requested
  7245.  0Bh    power management: resume
  7246.  0Ch    power management: suspend
  7247.  0Dh    exclusive access granted
  7248.  0Eh    exclusive access requested
  7249.  0Fh    perform physical reset
  7250.  10h    physical reset requested
  7251.  11h    card has been reset
  7252.  12h    MTD request (read/write/etc)
  7253.  14h    request for client info
  7254.  15h    timer has expired
  7255.  16h    Socket Service was modified
  7256.  17h    write-protected
  7257.  18h    attention requested
  7258.  40h    card insertion
  7259.  80h    reset complete
  7260.  81h    erase complete
  7261.  82h    registration complete
  7262.  
  7263. Format of Card Services Information:
  7264. Offset    Size    Description    (Table 00700)
  7265.  00h    WORD    length of information record in bytes
  7266.  02h    WORD    signature
  7267.  04h    WORD    number of sockets
  7268.  06h    WORD    revision level
  7269.  08h    WORD    Card Services level
  7270.  0Ah    WORD    offset of vendor string
  7271.  0Ch    WORD    length of vendor string
  7272.  0Eh    WORD    number of functions
  7273.  10h 255 BYTEs    vendor string
  7274. SeeAlso: #00702
  7275.  
  7276. Format of Card Services Client structure:
  7277. Offset    Size    Description    (Table 00701)
  7278.  00h    WORD    PCMCIA socket number
  7279.  02h    WORD    client attributes
  7280.  
  7281. Format of Cards Services Client Information:
  7282. Offset    Size    Description    (Table 00702)
  7283.  00h    WORD    maximum length of data in bytes (180)
  7284.  02h    WORD    (ret) length of returned data
  7285.  04h    WORD    attributes (see #00703)
  7286.  06h    WORD    revision level (BCD)
  7287.  08h    WORD    Card Services level (BCD)
  7288.  0Ah    WORD    revision date (DOS packed date format) (see #01666)
  7289.  0Ch    WORD    offset to name
  7290.  0Eh    WORD    length of name
  7291.  10h    WORD    offset to vendor string
  7292.  12h    WORD    length of vendor string
  7293.  14h 80 BYTEs    buffer for name
  7294.  64h 80 BYTEs    buffer for vendor string
  7295. SeeAlso: #00700,#00704
  7296.  
  7297. Bitfields for Card Services client attributes:
  7298. Bit(s)    Description    (Table 00703)
  7299.  0    memory client
  7300.  1    MTD client
  7301.  2    I/O client
  7302.  3    all clients can share this card
  7303.  4    only one client can use this card at a time
  7304. SeeAlso: #00702
  7305.  
  7306. Format of Card Services configuration information:
  7307. Offset    Size    Description    (Table 00704)
  7308.  00h    WORD    socket (usually 0000h)
  7309.  02h    WORD    attributes (see #00705)
  7310.  04h    BYTE    Vcc value
  7311.  05h    BYTE    Vpp1 value
  7312.  06h    BYTE    Vpp2 value
  7313.  07h    BYTE    interface type (see #00706)
  7314.  08h    DWORD    base address of configuration registers
  7315.  0Ch    BYTE    card's Status register setting (if present)
  7316.  0Dh    BYTE    card's Pin register setting (if present)
  7317.  0Eh    BYTE    card's Socket/Copy register setting (if present)
  7318.  0Fh    BYTE    card's Option register setting (if present)
  7319.  10h    BYTE    bitmap of present card configuration registers
  7320.  11h    BYTE    first device type
  7321.  12h    BYTE    function code
  7322.  13h    BYTE    SysInit mask
  7323.  14h    WORD    manufacturer code
  7324.  16h    WORD    manufacturer information
  7325.  18h    BYTE    valie card register values
  7326.  19h    BYTE    IRQ number assigned to PC Card
  7327.  1Ah    WORD    IRQ attributes (see #00708)
  7328.  1Ch    WORD    base port address (for I/O range 1)
  7329.  1Eh    BYTE    number of contiguous ports (for I/O range 1)
  7330.  1Fh    BYTE    bitmap of port attributes (for I/O range 1) (see #00709)
  7331.  20h    WORD    base port address (for I/O range 2)
  7332.  22h    BYTE    number of contiguous ports (for I/O range 2)
  7333.  23h    BYTE    bitmap of port attributes (for I/O range 2) (see #00709)
  7334.  24h    BYTE    number of I/O address lines decoded (16-bit PC Card only)
  7335.  25h    BYTE    extended status register setting (if present)
  7336.  26h    BYTE    bitmap of DMA attributes (see #00710)
  7337.         (note: value at call is used to set!)
  7338.  27h    BYTE    assigned DMA channel
  7339.  28h    BYTE    number of I/O windows in use on logical socket
  7340.  29h    BYTE    number of memory windows in use on logical socket
  7341. SeeAlso: #00703,#00724
  7342.  
  7343. Bitfields for Card Services Configuration attributes:
  7344. Bit(s)    Description    (Table 00705)
  7345.  0    exclusive
  7346.  1    IRQ active
  7347.  2    CardBus card
  7348.  3-5    reserved (0)
  7349.  6    DMA channel is active
  7350.  7    reserved (0)
  7351.  8    valid client
  7352.  9    overwrite voltage value
  7353.  10-15    reserved (0)
  7354. SeeAlso: #00704
  7355.  
  7356. Bitfields for Card Services Configuration interface type:
  7357. Bit(s)    Description    (Table 00706)
  7358.  0    memory interface
  7359.  1    I/O and memory interface
  7360.  2    CardBus interface
  7361.  3-7    reserved (0)
  7362. SeeAlso: #00704
  7363.  
  7364. Bitfields for Card Services Configuration registers:
  7365. Bit(s)    Description    (Table 00707)
  7366.  0    option value is value
  7367.  1    status value
  7368.  2    pin-replacement value
  7369.  3    copy value
  7370.  4    extended status value
  7371.  5-7    reserved (0)
  7372. SeeAlso: #00704
  7373.  
  7374. Bitfields for Card Services Configuration IRQ attributes:
  7375. Bit(s)    Description    (Table 00708)
  7376.  1-0    sharing
  7377.     00 no sharing
  7378.     01 time-multiplex sharing
  7379.     10 dynamic sharing
  7380.     11 reserved
  7381.  2    force pulse mode
  7382.  3    first used together
  7383.  4-7    reserved
  7384.  8    pulse IRQ has been assigned
  7385.  9-15    reserved
  7386. SeeAlso: #00704,#00709,#00710,#00715,#00718
  7387.  
  7388. Bitfields for Card Services Configuration Port attributes:
  7389. Bit(s)    Description    (Table 00709)
  7390.  0    shared I/O ports
  7391.  1    "CS_FirstCommonUsedCard"
  7392.  2    force alias access
  7393.  3    =1 sixteen-bit I/O
  7394.     =0 eight-bit I/O
  7395.  7-4    reserved (0)
  7396. SeeAlso: #00704,#00708,#00710,#00717
  7397.  
  7398. Bitfields for Card Services Configuration DMA attributes:
  7399. Bit(s)    Description    (Table 00710)
  7400.  1-0    sharing mode
  7401.     00 no sharing
  7402.     01 time-multiplex sharing
  7403.     10 dynamic sharing
  7404.     11 reserved
  7405.  3-2    DMA request signal
  7406.     00 reserved
  7407.     01 DMARQ uses pin SPKR#
  7408.     10 DMARQ uses pin IOIS16#
  7409.     11 DMARQ uses pin INPACK#
  7410.  4    DMA size
  7411.     0 eight bits
  7412.     1 sixteen bits
  7413.  7-5    reserved (0)
  7414. SeeAlso: #00704,#00708,#00709
  7415.  
  7416. Format of Card Services Tuple information:
  7417. Offset    Size    Description    (Table 00711)
  7418.  00h    WORD    logical socket number
  7419.  02h    WORD    attributes
  7420.         bit 0: return Link tuples
  7421.  04h    BYTE    code value of desired tuple
  7422.  05h    BYTE    reserved (0)
  7423.  06h    WORD    (ret) TupleFlags
  7424.  08h    DWORD    (ret) -> Card Services Link State Information
  7425.  0Ch    DWORD    (ret) -> Card Services CIS State Information
  7426.  10h    BYTE    (ret) code for tuple
  7427.  11h    BYTE    (ret) link value for tuple
  7428. SeeAlso: #00712
  7429.  
  7430. Format of Card Services GetTupleData record:
  7431. Offset    Size    Description    (Table 00712)
  7432.  00h    WORD    logical socket
  7433.  02h    WORD    attributes
  7434.  04h    BYTE    code value of desired tuple
  7435.  05h    BYTE    offset into tuple from link byte
  7436.  06h    WORD    flags
  7437.  08h    DWORD    -> Link
  7438.  0Ch    DWORD    -> CIS
  7439.  10h    WORD    (call) maximum amount of data to return (0004h)
  7440.  12h    WORD    (ret) amount of data returned
  7441.  14h    DWORD    (ret) tuple data
  7442. SeeAlso: #00711
  7443.  
  7444. Format of Card Services Client Registration record:
  7445. Offset    Size    Description    (Table 00713)
  7446.  00h    WORD    attributes
  7447.  02h    WORD    event mask
  7448.  04h    WORD    client data (passed to client event handler in DI)
  7449. --- 16-bit code ---
  7450.  06h    WORD    client data selector (passed to event handler in DS)
  7451.  08h    WORD    client data offset (passed to event handler in SI)
  7452.  0Ah    WORD    reserved
  7453. --- 32-bit code ---
  7454.  06h    WORD    reserved
  7455.  08h    DWORD    client data offset (passed to event handler in ESI)
  7456. ------
  7457.  0Ch    WORD    expected Card Services version (0210h for v2.10)
  7458.  
  7459. Bitfields for Card Services client event codes:
  7460. Bit(s)    Description    (Table 00714)
  7461.  0    change in write-protect status
  7462.  1    change in card lock
  7463.  2    ejection request
  7464.  3    insertion request
  7465.  4    battery is dead
  7466.  5    battery low
  7467.  6    change in Ready
  7468.  7    change in Card Detect
  7469.  8    power management change
  7470.  9    reset
  7471.  10    Socket Services updated
  7472.  11    extended status change
  7473. SeeAlso: #00713
  7474.  
  7475. Format of Card Services ReleaseIRQ record:
  7476. Offset    Size    Description    (Table 00715)
  7477.  00h    WORD    logical socket number
  7478.  02h    WORD    attributes (see #00708)
  7479.  04h    BYTE    assigned IRQ number to be released
  7480.  
  7481. Format of Card Services Release Configuration record:
  7482. Offset    Size    Description    (Table 00716)
  7483.  00h    WORD    logical socket number
  7484.  
  7485. Format of Card Services Request I/O record:
  7486. Offset    Size    Description    (Table 00717)
  7487.  00h    WORD    logical socket number
  7488.  02h    WORD    base port 1
  7489.  04h    BYTE    size of port range 1
  7490.  05h    BYTE    attributes for port range 1 (see #00709)
  7491.  06h    WORD    base port 2
  7492.  08h    BYTE    size of port range 2
  7493.  09h    BYTE    attributes for port range 2 (see #00709)
  7494.  0Ah    BYTE    number of address lines (typically 16)
  7495. SeeAlso: #00718,#00716
  7496.  
  7497. Format of Card Services Request IRQ record:
  7498. Offset    Size    Description    (Table 00718)
  7499.  00h    WORD    logical socket number
  7500.  02h    WORD    attributes (see #00708)
  7501.  04h    BYTE    (ret) assigned IRQ number, if successful
  7502.  05h    BYTE    IRQ info (see #00719)
  7503.  06h    WORD    bitmap of available IRQs (bit 0 = IRQ0, etc.)
  7504.         (only if bit 4 of IRQ info set)
  7505. SeeAlso: #00717,#00716
  7506.  
  7507. Bitfields for Card Services Request IRQ info flags:
  7508. Bit(s)    Description    (Table 00719)
  7509.  7    IRQ is shared
  7510.  6    pulse (edge-triggered) interrupt
  7511.  5    level interrupt
  7512.  4    use IRQ bitmap
  7513. --- bit 4 set ---
  7514.  3    vendor-specific interrupt
  7515.  2    bus error
  7516.  1    I/O check interrupt
  7517.  0    NMI
  7518. --- bit 4 clear ---
  7519.  3-0    IRQ number
  7520. SeeAlso: #00718
  7521.  
  7522. Format of Card Services Request Window record:
  7523. Offset    Size    Description    (Table 00720)
  7524.  00h    WORD    logical socket number
  7525.  02h    WORD    attributes (see #00721)
  7526.  04h    DWORD    system base adress
  7527.  08h    DWORD    size of memory window
  7528.  0Ch    BYTE    additional info
  7529.         if attributes bit ??? is set, this is the address-lines field
  7530.         otherwise, this is the access-speed field (see #00722)
  7531.  
  7532. Bitfields for Card Services Request Window attributes:
  7533. Bit(s)    Description    (Table 00721)
  7534.  0    I/O window instead of memory window
  7535.  1    attribute memory instead of normal memory (16-bit PC Cards only)
  7536.  2    window enabled
  7537.  3    16-bit data path instead of 8-bit path (16-bit PC Cards only, v2.10+)
  7538.     (ignored if bit 9 set)
  7539.  4    size is given in 16K pages (invalid for CardBus PC Cards)
  7540.  5    shared (invalid for CardBus)
  7541.  6    first shared (invalid for CardBus)
  7542.  7    "CS_BindingSpecific" (memory window only)
  7543.  8    card offsets are window-size granular (16-bit PC Card memory window)
  7544.  9    32-bit data path (CardBus only)
  7545.  10    reserved (0)
  7546.  12-11    prefetch/cache
  7547.     00 neither prefetchable nor cacheable
  7548.     01 prefetchable but not cacheable
  7549.     10 prefetchable and cachable
  7550.     11 reserved
  7551.  15-13    decoded base address register number (CardBus only)
  7552. SeeAlso: #00720,#00722
  7553.  
  7554. Bitfields for Card Services Request Window access-speed:
  7555. Bit(s)    Description    (Table 00722)
  7556.  6-3    mantissa
  7557.     0000 use device speed code
  7558.     0001  1.0
  7559.     0010  1.2
  7560.     0011  1.2 ???
  7561.     0100  1.5
  7562.     0101  2.0
  7563.     0110  2.5
  7564.     0111  3.0
  7565.     1000  3.5
  7566.     1001  4.0
  7567.     1010  4.5
  7568.     1011  5.0
  7569.     1100  5.5
  7570.     1101  6.0
  7571.     1110  7.0
  7572.     1111  8.0
  7573. --- if mantissa==0 ---
  7574.  2-0    device speed code
  7575.     000 reserved
  7576.     001 250 ns
  7577.     010 200 ns
  7578.     011 150 ns
  7579.     100 100 ns
  7580.     101-111 reserved
  7581. --- if mantissa<>0 ---
  7582.  2-0    speed exponent
  7583.     000    1 ns
  7584.     001    10 ns
  7585.     010   100 ns
  7586.     011    1 us
  7587.     100    10 us
  7588.     101   100 us
  7589.     110    1 ms
  7590.     111    10 ms
  7591. SeeAlso: #00720,#00721
  7592.  
  7593. Format of Card Services Request/Release Exclusive Access record:
  7594. Offset    Size    Description    (Table 00723)
  7595.  00h    WORD    logical socket number
  7596.  02h    WORD    attributes (currently all reserved, must be 0000h)
  7597.  
  7598. Format of Card Services Request Configuration record:
  7599. Offset    Size    Description    (Table 00724)
  7600.  00h    WORD    socket (usually 0000h)
  7601.  02h    WORD    attributes (see #00705)
  7602.  04h    BYTE    Vcc value
  7603.  05h    BYTE    Vpp1 value
  7604.  06h    BYTE    Vpp2 value
  7605.  07h    BYTE    interface type (see #00706)
  7606.  08h    DWORD    base address of configuration registers
  7607.  0Ch    BYTE    card's Status register setting (if present)
  7608.  0Dh    BYTE    card's Pin register setting (if present)
  7609.  0Eh    BYTE    card's Socket/Copy register setting (if present)
  7610.  0Fh    BYTE    card's Option register setting (if present)
  7611.  10h    BYTE    bitmap of present card configuration registers
  7612.  11h    BYTE    extended status register setting (if present)
  7613. SeeAlso: #00704
  7614. --------X-1AB000-----------------------------
  7615. INT 1A U - HP 100LX/200LX - PCMCIA - ???
  7616.     AX = B000h
  7617.     ES:BX -> parameter block ???
  7618. Return: CF clear if ???
  7619.     CF set if ???
  7620. Note:    called by HP 100LX/200LX PCMCIA client CIC100.EXE
  7621. --------d-1AB001CX4D52-----------------------
  7622. INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
  7623.     AX = B001h
  7624.     CX = 4D52h ("MR")
  7625.     DX = 4349h ("CI")
  7626. Return: CX = 4943h ("IC") if installed
  7627.     DX = 524Dh ("RM") if installed
  7628.         ES:DI -> MRCINFO structure (see #00725)
  7629. Note:    this call is functionally identical to INT 2F/AX=4A12h, which should
  7630.       be called first, as this call is used for the first, ROM-based
  7631.       MRCI server, while the other call is used for RAM-based servers
  7632.       which may be partially or entirely replacing a prior server
  7633. SeeAlso: INT 2F/AX=4A12h
  7634.  
  7635. Format of MRCINFO structure:
  7636. Offset    Size    Description    (Table 00725)
  7637.  00h  4 BYTEs    vendor signature
  7638.         "MSFT" Microsoft
  7639.  04h    WORD    server version (high=major)
  7640.  06h    WORD    MRCI specification version
  7641.  08h    DWORD    address of server entry point (see #00727)
  7642.  0Ch    WORD    bit flags: server capabilities (see #00726)
  7643.  0Eh    WORD    bit flags: hardware assisted capabilities (see #00726)
  7644.  10h    WORD    maximum block size supported by server (at least 8192 bytes)
  7645.  
  7646. Bitfields for MRCI capabilities:
  7647. Bit(s)    Description    (Table 00726)
  7648.  0    standard compress
  7649.  1    standard decompress
  7650.  2    update compress
  7651.  3    MaxCompress (not present in initial public release)
  7652.  4    reserved
  7653.  5    incremental decompress
  7654.  6    MRCI 2.0 standard compress
  7655.  7    MRCI 2.0 standard decompress
  7656.  8-14    reserved
  7657.  15    this structure is in ROM and can't be modified
  7658.     (server capabilities only)
  7659.  
  7660. (Table 00727)
  7661. Call MRCI entry point with:
  7662.     DS:SI -> MRCREQUEST structure (see #00728)
  7663.     CX = type of client (0000h application, 0001h file system)
  7664.     AX = operation
  7665.         0001h perform standard compression
  7666.         0002h perform standard decompression
  7667.         0004h perform update compression
  7668.         0008h perform MaxCompress
  7669.         0020h perform incremental decompression
  7670.         0040h perform MRCI 2.0 standard compression
  7671.         0080h perform MRCI 2.0 standard decompression
  7672.     AX = FFFFh clear flags
  7673.         BX = bitmask of flags to clear (set bits in BX are flags to clear)
  7674. Return: AX = status
  7675.         0000h successful
  7676.         0001h invalid function
  7677.         0002h server busy, try again
  7678.         0003h destination buffer too small
  7679.         0004h incompressible data
  7680.         0005h bad compressed data format
  7681.     BP destroyed (MS-DOS 6.2)
  7682. Note:    MRCI driver may chain to a previous driver
  7683.  
  7684. Format of MRCREQUEST structure:
  7685. Offset    Size    Description    (Table 00728)
  7686.  00h    DWORD    pointer to source buffer
  7687.  04h    WORD    size of source buffer (0000h = 64K)
  7688.  06h    WORD    (UpdateCompress only)
  7689.         (call) offset in source buffer of beginning of changed data
  7690.         (ret) offset in destination buffer of beginning of changed
  7691.               compressed data
  7692.  08h    DWORD    pointer to destination buffer
  7693.         must contain original compressed data for UpdateCompress
  7694.  0Ch    WORD    size of destination buffer (0000h = 64K)
  7695.         any compression: size of buffer for compressed data
  7696.         standard decompression: number of bytes to be decompressed
  7697.         incremental decompression: number of byte to decompress now
  7698.         (ret) actual size of resulting data
  7699.  0Eh    WORD    client compressed data storage allocation size
  7700.  10h    DWORD    incremental decompression state data
  7701.         set to 00000000h before first incremental decompression call
  7702. Notes:    the source and destination buffers may not overlap
  7703.     the source and destination buffer sizes should normally be the same
  7704.     application should not update the contents of the MRCREQUEST structure
  7705.       between incremental decompression calls
  7706. --------!---Section--------------------------
  7707.